我有
ID Field1 Field2 Field3 Field4
1 A 1 6 F
2 A 0 1 F
3 B 2 4 F
4 B 3 8 F
我想要
ID Field1 Field2 Field3 Field4
1 A 1 1 F
4 B 3 4 F
我希望每个不同的'Field1'有1行。 由于'Field2'和'Field3',所以有超过100个字段和行重复(所有其他字段与Field4相同)。
在我最后的df中,我希望返回'Field2'的最大值和'Field3'的最小值。
答案 0 :(得分:3)
在agg
上下文
groupby
df.groupby('Field1', as_index=False).agg(
{'Field2': 'max', 'Field3': 'min'}
)
Field1 Field2 Field3
0 A 1 1
1 B 3 4
请注意,您不能神奇地包含'ID'
和'Field4'
,因为它可能来自群组中的任何行。您还需要另一个聚合函数,以便您也可以选择这些字段。
我会'first'
使用'ID'
,'last'
使用'Field4'
进行演示。
df.groupby('Field1', as_index=False).agg(
{'ID': 'first', 'Field2': 'max', 'Field3': 'min', 'Field4': 'last'}
).reindex(columns=df.columns)
ID Field1 Field2 Field3 Field4
0 1 A 1 1 F
1 3 B 3 4 F