按组填充数据框中的所有变量

考虑这个简单的例子


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: []

疯狂的事情。这里有什么问题?谢谢!


幕布斯6054654
浏览 126回答 1
1回答

回首忆惘然

df.groupby('group')正在生成groupby尚未分配名称的对象事物。然后,您正在fillna使用inplace=True. 当您使用时,inplace=True您会更改调用数据框并返回一堆无内容。 而且你折腾,调用数据框入空隙。df.groupby('group').ffill()你应该没事吧。另一种看待它的方式:# Copy                       Altered Copy In-Place... returning None# |                          |# v                          vdf.copy().set_index('group', inplace=True)副本去哪儿了?该对象现在位于内存中等待垃圾收集器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python