【发布时间】:2019-11-21 17:51:00
【问题描述】:
我有一个如下的数据框:
import pandas as pd
df = pd.DataFrame({'Country':['USA','USA','MEX','IND','UK','UK','UK'],
'Region':['Americas','NaN','NaN','Asia','Europe','NaN','NaN'],
'Flower':['Rose','Rose','Lily','Orchid','Dandelion','Dandelion','Dandelion'],
'Animal':['Bison','NaN','Golden Eagle','Tiger','Lion','Lion','NaN'],
'Game':['Baseball','Baseball','soccer','hockey','cricket','cricket','cricket']})
我想按Country 和Flower 分组,并向前填充或向后填充有缺失值的列Region 和Animal。但是Game 列应该保持不变
我试过了,但是没用:
df['Region'] = df.groupby(['Country','Flower'])['Region'].transform(lambda x: x.ffill())
还有:
df.groupby(['Country','Flower'])['Animal', 'Region'].isna().bfill()
我想知道该怎么做。
虽然这可行,但它会删除 Games 列:
df=df.replace({'NaN':np.nan})
df.groupby(['Country','Flower'])['Animal', 'Region'].bfill().ffill()
如果我进行转换,则长度不匹配。另请注意,这是示例数据帧,我在原始帧中添加了“NaN”作为字符串,它是 np.nan。
【问题讨论】:
标签: python pandas pandas-groupby