数据
ID Field1 Field2
1 A '1'
2 A ' '
3 B '2'
4 B '3'
要
ID Field1 Field2
1 A '1'
4 B '3'
我有多个重复行,只在Field2(字符字段)上有所不同。 对于每个不同的Field1,我只想保留具有Field2的 max 字符值的行(即'3'>'2'>'1'>'(空格)')
答案 0 :(得分:3)
sort_values
和drop_duplicates
df.sort_values(['Field1', 'Field2']).drop_duplicates('Field1', keep='last')
ID Field1 Field2
0 1 A '1'
3 4 B '3'
groupby
和apply
我不推荐这个解决方案。我只是想表现出来。
df.groupby('Field1', as_index=False).apply(
lambda d: d.iloc[d['Field2'].values.astype(str).argmax()])
ID Field1 Field2
0 1 A '1'
1 4 B '3'
答案 1 :(得分:0)
尝试分组功能
df = pd.DataFrame({'Field1': ['A', 'A', 'B', 'B'], 'Field2': ['1', ' ', '2', '3']})
df.groupby(['Field1']).max()