【发布时间】:2022-08-17 17:51:19
【问题描述】:
下面是我的数据框。
df = pd.DataFrame({\'vin\':[\'aaa\',\'aaa\',\'aaa\',\'bbb\',\'bbb\',\'bbb\',\'ddd\',\'eee\',\'eee\',\'fff\'],
\'c1\':[35,\'NA\',\'NA\',\'NA\',4,\'NA\',\'NA\',\'NA\',56,406],
\'c2\':[35,\'NA\',\'NA\',\'NA\',43,\'NA\',\'NA\',\'NA\',67,77],
\'c3\':[36,\'NA\',\'NA\',\'NA\',104,\'NA\',\'NA\',\'NA\',44,306]})
我想相对于列 \'vin\' 拖动 \'c1\' \'c2\' 和 \'c3\' 的整数值。
以下是预期的输出: -
df = pd.DataFrame({\'vin\':[\'aaa\',\'aaa\',\'aaa\',\'bbb\',\'bbb\',\'bbb\',\'ddd\',\'eee\',\'eee\',\'fff\'],
\'c1\':[35,35,35,4,4,4,\'NA\',56,56,406],
\'c2\':[35,35,35,43,43,43,\'NA\',67,67,77],
\'c3\':[36,36,36,104,104,104,\'NA\',44,44,306]})
笔记:\'vin\' 列 \'ddd\' 的值将保持为 \'NA\',因为没有可用于 \'ddd\' 的整数值。
我尝试了 ffill() 或 groupbyffill() 但我没有得到预期的输出。 下面是几行代码,我试过了。
#(1)
df[\'c1\'] = df.groupby([\'vin\'])[\'c1\'].ffill()
#(2)
df[[\"c1\",\"c2\" \"c3\"]] = df[[\"c1\", \"c2\",\"c3\"]].fillna(df.groupby([\'vin\'])[[\"c1\", \"c2\",\"c3\"]].ffill())
#(3)
df[\"c1\"] = df.groupby(\'vin\')[\'c1\'].transform(lambda x: x.ffill())
标签: python pandas group-by ffill