我的数据框看起来像这样:
name event_code_0 event_code_1100 event_code_1110 event_code_1120 event_code_1120 event_code_1199
0 A 1 0 0 0 0 0
1 A 0 0 1 0 0 0
2 A 0 0 0 1 0 0
3 A 0 0 1 0 0 0
4 A 0 1 0 0 0 0
5 A 0 0 0 0 1 0
6 A 0 0 0 1 0 0
7 A 0 1 0 0 0 0
8 A 1 0 0 0 0 0
9 B 0 0 0 0 0 1
10 B 0 0 0 0 1 0
11 B 0 0 1 0 0 0
12 B 0 1 0 0 0 0
13 B 1 0 0 0 0 0
14 B 0 0 1 0 0 0
15 B 0 0 0 1 0 0
16 B 0 1 0 0 0 0
17 B 0 0 0 0 0 1
我想合并列上的不同行:' name'并计算事件代码。
例如,数据框应如下所示:
name event_code_0 event_code_1100 event_code_1110 event_code_1120 event_code_1120 event_code_1199
0 A 2 2 2 2 1 0
1 B 1 2 2 1 1 2
我用.merge尝试了不同的东西,但没有成功。 也许有人知道一个简单的伎俩...
干杯, ASTRUS
答案 0 :(得分:3)
您需要groupby
并汇总sum
,name
添加reset_index
或参数as_index=False
:
df1 = df.groupby('name').sum().reset_index()
print (df1)
name event_code_0 event_code_1100 event_code_1110 event_code_1120 \
0 A 2 2 2 2
1 B 1 2 2 1
event_code_1120 event_code_1199
0 1 0
1 1 2
或者:
df1 = df.groupby('name', as_index=False).sum()
print (df1)
name event_code_0 event_code_1100 event_code_1110 event_code_1120 \
0 A 2 2 2 2
1 B 1 2 2 1
event_code_1120 event_code_1199
0 1 0
1 1 2
答案 1 :(得分:2)
您需要按名称列进行分组并获取总和:
df.groupby('name').sum()
Out:
event_code_0 event_code_1100 event_code_1110 event_code_1120 \
name
A 2 2 2 2
B 1 2 2 1
event_code_1120.1 event_code_1199
name
A 1 0
B 1 2
默认情况下,这会将name列设置为index。您可以通过以下方式更改:
df.groupby('name', as_index=False).sum()
Out:
name event_code_0 event_code_1100 event_code_1110 event_code_1120 \
0 A 2 2 2 2
1 B 1 2 2 1
event_code_1120.1 event_code_1199
0 1 0
1 1 2
或df.groupby('name').sum().reset_index()
。