我有一个如下所示的DataFrame
df=pd.DataFrame({'A':[np.nan,1,1,np.nan],'B':[2,np.nan,2,2]},index=[1,1,2,2])
df.columns=['A','A']
现在我要ffill
的值groupby
index
,首先尝试
df.groupby(level=0).ffill()
哪个返回错误代码
> ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
它看起来像个错误,然后我尝试使用apply,它将返回预期的输出。
df.groupby(level=0).apply(lambda x : x.ffill())
A A
1 NaN 2.0
1 1.0 2.0
2 1.0 2.0
2 1.0 2.0
当列是唯一的时,供您参考, 恰好 (第二季度)很好,但是,创建一个索引列,列名称为NaN
< / p>
df.columns=['C','D']
df.groupby(level=0).ffill()
NaN C D
1 1 NaN 2.0
1 1 1.0 2.0
2 2 1.0 2.0
2 2 1.0 2.0
问题:
1这是一个错误吗?为什么申请仍然可以在这种情况下使用?2为什么
groupby
与index
和ffill
一起创建附加列?
答案 0 :(得分:0)
肯定看起来有问题。只是要注意,根据pandas documentation,.ffill()
方法是.fillna(method='ffill')
的同义词。使用后者可以为熊猫0.23.4
版中的两个示例生成预期的输出,而不会出现任何错误或其他列。希望有帮助。
import pandas as pd
import numpy as np
df=pd.DataFrame({'A':[np.nan,1,1,np.nan],'B':[2,np.nan,2,2]},index=[1,1,2,2])
df.columns=['A','A'] #dup column names
df.groupby(level=0).fillna(method='ffill')
Output:
A A
1 NaN 2.0
1 1.0 2.0
2 1.0 2.0
2 1.0 2.0