考虑这个简单的例子
df = pd.DataFrame({'date' : [pd.to_datetime('2018-01-01'),
pd.to_datetime('2018-01-01'),
np.nan,
pd.to_datetime('2018-01-01')],
'group' : ['a',np.nan,'b','b'],
'value' : [1,2,3,np.nan],
'value_useless' : [2,2,np.nan,2]})
df
Out[101]:
date group value value_useless
0 2018-01-01 a 1.00000 2.00000
1 2018-01-01 NaN 2.00000 2.00000
2 NaT b 3.00000 nan
3 2018-01-01 b nan 2.00000
在这里,我要按组转发填充数据框中的所有变量。
根据文档(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.fillna.html),我应该能够这样做:
df.groupby('group').fillna(method = 'ffill', inplace = True)
Out[110]:
Empty DataFrame
Columns: []
Index: []
疯狂的东西。 这是什么问题? 谢谢!
答案 0 :(得分:2)
df.groupby('group')
正在产生尚未分配名称的groupby
对象。然后,您正在使用fillna
来进行inplace=True
。当您使用inplace=True
时,您将更改调用数据帧并返回任何内容。 然后,您将调用数据帧扔到空白处。
df.groupby('group').ffill()
你还好吧。
另一种查看方式:
# Copy Altered Copy In-Place... returning None
# | |
# v v
df.copy().set_index('group', inplace=True)
副本去哪了?现在,该对象正坐在内存中等待垃圾收集器。