在执行pandas.DataFrame.groupby()。sum()时,可以保留非数字列(第一个出现的值)吗?
例如,我有一个这样的DataFrame:
df = pd.DataFrame({'A' : ['aa1', 'aa2', 'aa1', 'aa2'],'B' : ['bb1', 'bbb1', 'bb2', 'bbb2'],'C' : ['cc1', 'ccc2', 'ccc3', 'ccc4'],'D' : [1, 2, 3, 4],'E' : [1, 2, 3, 4]})
>>> df
A B C D E
0 aa1 bb1 cc1 1 1
1 aa2 bbb1 ccc2 2 2
2 aa1 bb2 ccc3 3 3
3 aa2 bbb2 ccc4 4 4
>>> df.groupby(["A"]).sum()
D E
A
aa1 4 4
aa2 6 6
Run Code Online (Sandbox Code Playgroud)
以下是我想要获得的结果:
B C D E
A
aa1 bb1 cc1 4 4
aa2 bbb1 ccc2 6 6
Run Code Online (Sandbox Code Playgroud)
请注意,列B和C 的值是每个组键的第一个关联的B值和C值。
小智 5
只需使用“第一”:
df.groupby(["A"]).agg({'B': 'first',
'C': 'first',
'D': sum,
'E': sum})
Run Code Online (Sandbox Code Playgroud)
对于 groupby-sum 数据框中的每个键,在原始数据框中查找键并将列的关联值放入B新列中。
#groupby and sum over columns C and D
df_1 = df.groupby(['A']).sum()
Run Code Online (Sandbox Code Playgroud)
查找 B 列中与 groupby 键关联的第一个值
groupby keys
col_b = []
#iterate through keys and find the the first value in df['B'] with that key in column A
for i in df_1.index:
col_b.append(df['B'][df['A'] == i].iloc[0])
#insert list of values into new dataframe
df_1.insert(0, 'B', col_b)
>>>df_1
B D E
A
aa1 bb1 4 4
aa2 bbb1 6 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |