我有这样的DataFrame
W2 N V1 V2
ba EX 62069 30014
ba ADV 12325 8218
ba X 23 22
b X 164831 39425
b PRT 41543 16708
我需要在W2中使用相同的值来汇总V1,V2值。这一行应该是V1 == max。 我这样做:
df_4=df_2.sort_values(['W2','V1'],ascending=[True, False]).drop_duplicates(['W2'])
df_3= df_2.groupby(['W2'],as_index=False).sum()
但是当我搜索max时我需要忽略行,其中N == EX(只有max,sum应该包括这行的V1和V2)。 所以结果应该是:
W2 N V1 V2
ba ADV 74417 38254
b X 206374 56133
我希望我能用熊猫做到这一点。有什么想法吗?
答案 0 :(得分:0)
我认为需要先按query
或boolean indexing
过滤掉行,然后仅为set_index
添加map
和reindex
列,最后添加{{3如果需要按N
更改最终订单:
df_2
s = (df_2.query('N != "EX"')
.sort_values(['W2','V1'],ascending=[True, False])
.drop_duplicates(['W2'])
.set_index('W2')['N'])