我试图使用具有相似列值的行来估算值 .
例如,我有这个数据帧
one | two | three
1 1 10
1 1 nan
1 1 nan
1 2 nan
1 2 20
1 2 nan
1 3 nan
1 3 nan
我想使用列['one']和['two']的键,这是相似的,如果列['three']不完全是nan,那么从列中的值为一行类似键的现有值'3']
这是我的愿望结果
one | two | three
1 1 10
1 1 10
1 1 10
1 2 20
1 2 20
1 2 20
1 3 nan
1 3 nan
您可以看到键1和3不包含任何值,因为现有值不存在 .
我尝试过使用groupby fillna()
df['three'] = df.groupby(['one','two'])['three'].fillna()
这给了我一个错误 .
我尝试了向前填充,这给了我相当奇怪的结果,它向前填充第2列 . 我正在使用此代码进行前向填充 .
df['three'] = df.groupby(['one','two'], sort=False)['three'].ffill()
感谢您的时间 .
1 回答
如果每个组只有一个非NaN值使用
ffill
(向前填充)和bfill
(向后填充)每组,那么需要apply
与lambda
:但是如果每组多个值并且需要用某个常数替换
NaN
,例如mean
按组: