我有这样的数据框
A B C
0 1 7 a
1 2 8 b
2 3 9 c
3 4 10 a
4 5 11 b
5 6 12 c
我想在下面得到groupby结果(键=列C);
A B
d 12 36
“ d”表示a或b,
所以我只想用“ a”和“ b”分组。
然后放在一起作为“ d”。
当我总结所有关键要素然后删除时,会花费很多时间...。
一种选择是使用pandas
where
转换C列,以便它在原位置a
或b
变为原位置d
,然后您可以对转换后的列进行分组并对其进行常规汇总,如果c
不需要使用,则可以将其简单地放在摘要之后:
df_sum = df.groupby(df.C.where(~df.C.isin(['a', 'b']), "d")).sum().reset_index()
df_sum
# C A B
#0 c 9 21
#1 d 12 36
df_sum.loc[df_sum.C == "d"]
# C A B
#1 d 12 36
为了更清楚地了解该where
子句的工作原理:
df.C.where(~df.C.isin(['a','b']), 'd')
# 0 d
# 1 d
# 2 c
# 3 d
# 4 d
# 5 c
# Name: C, dtype: object
它的作用就像一个替换方法和替换a
和b
与d
传递给时将被分组在一起groupby
的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句