【发布时间】:2021-01-09 15:22:34
【问题描述】:
我有以下 pandas DataFrame 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 总结为...一个值。 如何有效地做到这一点?
【问题讨论】:
-
好的,我如何确定是否需要将 3 个值或 4 个值组合在一起?
-
那么下划线后面的数字是否没有空格。这意味着可以按任何顺序从 1 到 20 所有数字都存在并且只存在一次?
-
我希望它有类似的宿舍。例如,第四季度:a_1、a_2、a_3。此外,下划线后没有空格。是的,这些数字只存在一次。
-
不。它们只是从 1 到 27 的数字。