假设我们有一个df如下
df = pd.DataFrame({ 'Col1' : [1, 1, 1, 2, 2, 2, 2],
'Col2' : [5, 6, 8, 3, 7, 8, 5],
'Col3' : [2, None, None, 3, None, None, 4],
'Col4' : [3, None,5, None, 8, None, 66],
'Col5': [None, 8, 6, None, 9, 6,None],
'Col6' : [3,5,2,5,2,7,9]})
我想替换None
列中的值Col3
,Col4
并在应用于第一列之后使用本文中Col5
jjs建议的解决方案。groupby
Col1
我做的方法是
df = df.groupby('Col1')['Col3','Col4','Col5'].ffill().bfill()
但是手动提到这些列需要做很多工作。
所以,我想知道我可以选择列Col3
,Col4
并Col5
通过分层?
谢谢
Tbh,我不确定我是否理解您的问题。
据我所知,您可以直接做
df.groupby('Col1').ffill().bfill()
因为ffill()
并且bfill()
只会用no更改您的列NaN
。
现在,如果您事先知道需要回填/填充哪些列并希望减少冗长,则可以将它们保存在cols
变量中
cols = ['Col3','Col4','Col5']
df[cols] = df.groupby('Col1')[cols].ffill().bfill()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句