Zah*_*hra 2 group-by pandas listagg
给定数据帧:
a b c
G1 1 6
G1 2 7
G2 1 7
G2 3 8
G2 4 9
G3 5 9
Run Code Online (Sandbox Code Playgroud)
我想将行聚合到:
b c
a
G1 {1, 2} {6, 7}
G2 {1, 3, 4} {8, 9, 7}
G3 {5} {9}
Run Code Online (Sandbox Code Playgroud)
达到此目的的方法之一是:
df = pd.DataFrame ({'a':['G1','G1','G2','G2','G2','G3'], 'b':[1,2,1,3,4,5], 'c':[6,7,7,8,9,9]})
df_agg1 = df.groupby ('a')['b'].apply (set)
df_agg2 = df.groupby ('a')['c'].apply (set)
pd.concat ([df_agg1, df_agg2], axis = 1)
Run Code Online (Sandbox Code Playgroud)
但是,对于每个附加列,这将需要单独通过行.
我想知道是否有更有效的方法来实现这一目标?
使用groupby.agg:
df.groupby('a').agg(lambda x: set(x))
Out:
b c
a
G1 {1, 2} {6, 7}
G2 {1, 3, 4} {8, 9, 7}
G3 {5} {9}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |