如果我想保留原有数据的结构不变,而不是新建一个DataFrame呢?
时间: 2024-10-29 12:11:19 浏览: 17
如果你想在原地修改DataFrame,而不创建新的,可以使用Pandas的`loc`和`fillna`函数结合。首先,你需要找到第一个非空的月均存储量,然后使用该值填充第一个月。这里是对应的代码片段:
```python
# 确保'month'列已经是连续的整数索引
df.sort_values(by=['category', 'month'], inplace=True)
# 找出每个品类第一个非零存储量的索引
first_nonzero_index = df.groupby('category')['storage_amount'].idxmin()
# 用这个索引找到对应月份的存储量,并填充第一个月
for category in df['category'].unique():
first_storage = df[(df['category'] == category) & (df['month'] == first_nonzero_index[category])]['storage_amount'].values[0]
df.loc[df['category'] == category, 'storage_amount'].fillna(value=first_storage, inplace=True)
df.reset_index(drop=True, inplace=True) # 如果你不希望月度索引重复,可以添加这行
print(df)
```
这段代码会直接在原始DataFrame `df` 中找到每个商品品类的第一个非零存储量,并用它填充第一个月的空白。注意,这里的假设是每个月份都有一个记录,如果某个品类第一个月确实没有存储量,则无法通过这种方式填充。
阅读全文