我有以下数据帧df:
fea1 fea2
0 a_1 1
1 a_2 2
2 a_4 3
3 a_8 7
4 u 9
5 be_1 5
6 a_3 24
7 a_5 5
8 a_6 8
9 be_4 6
9 a_10 9
10 be_3 1
11 be_2 4
12 be_5 3
13 be_6 2
我需要对a_1、a_2、a_3的“fea2”值(如1、2、24)求和并保存为a_q1,然后对a_4、a_5、a_6的“fea2”值求和并保存为a_q2。同样,对于be_1、be_2和be_3等也是如此。像下面这样
fea1 fea2
0 a_q1 27
1 a_q2 16
2 a_8 7
3 be_q1 10
4 be_q2 11
5 u 9
我试过这个
df.groupby(df['fea1'].str.extract(r'^(\D+)', expand=False))['fea2'].sum().reset_index()
但它总结了所有的a_1,a_2,a_3,a_4,。。。作为一个值,be_1,be_2,be_3,be_4作为。。。一个值。 如何有效地做到这一点
让我们试试这个:
输出:
详情:
.str
和extract
以及正则表达式进行命名捕获 小组李>groupby
和sum
李>感谢您的帮助@Scott Boston。我改变了一点,效果很好。所以,我在这里发布了完整的代码和你的
IIUC您需要首先在
fea1
上sort
,然后在其上创建一个组号,以便groupby
:相关问题 更多 >
编程相关推荐