在熊猫数据框中将两个常见行的值分组为一个

时间:2018-07-11 06:13:53

标签: python pandas dataframe

我有一个数据框,其值类似这样

ID Name Age Value1 Value2
1  Arya      10     
1  Arya              20
2  Sansa     67      
2  Sansa             56

我想要类似这样的输出

 ID Name Age Value1 Value2
 1  Arya      10     20
 2  Sansa     67     56

我知道我们可以使用groupby对它们进行分组,但是Age列为空白,因此我无法获得所需的结果。 请建议

2 个答案:

答案 0 :(得分:2)

如果每个组和每一列只有一个值,我认为需要GroupBy.first并将空值替换为NaN s

cols = ['Value1','Value2']

df[cols] = df[cols].replace('', np.nan)
df = df.groupby(['ID','Name','Age'])[cols].first()

答案 1 :(得分:1)

如果df的每个$('.down-caret')始终具有2个值,则可以先对行进行排序,然后分别填充IDValue1,然后删除重复项:

Value2

输出:

df = df.sort_values(['ID', 'Value1'], ascending=[True, False])
df[['Value1', 'Value2']] = df[['Value1', 'Value2']].replace('', np.NaN)
df['Value1'] = df['Value1'].ffill()
df['Value2'] = df['Value2'].bfill()
df = df.drop_duplicates(subset=['ID'])