Python Pandas 连接行并对值求和
Python Pandas concatenate rows and sum up values
我有一个如下所示的数据框:
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 尝试了不同的东西,但没有成功。
也许有人知道一个简单的技巧...
干杯,
阿斯特拉斯
您需要按名称列分组并求和:
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
默认情况下,这会将名称列设置为索引。您可以通过以下方式更改:
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()
.
您需要 groupby
and aggregate sum
, for name
to column add 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
我有一个如下所示的数据框:
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 尝试了不同的东西,但没有成功。 也许有人知道一个简单的技巧...
干杯, 阿斯特拉斯
您需要按名称列分组并求和:
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
默认情况下,这会将名称列设置为索引。您可以通过以下方式更改:
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()
.
您需要 groupby
and aggregate sum
, for name
to column add 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