我想知道是否存在一种在存在相同行的情况下“折叠”熊猫数据帧的简洁方法。例如:
df =
col_a col_b
a 1
b 2
b 3
c 4
d 5
d 6
d 7
我需要的是:
df_new =
col_a col_b
a 1
b [2, 3]
c 4
d [5, 6, 7]
它肯定应该包含groupby
df_new = df.groupby('col_a').apply(....)
但是,如何有效实施方括号中的内容,我感到困惑。
答案 0 :(得分:1)
s = df.groupby('col_a')['col_b'].apply(list)
df['col_c'] = df['col_a'].map(s)
print(df)
col_a col_b col_c
0 a 1 [1]
1 b 2 [2, 3]
2 b 3 [2, 3]
3 c 4 [4]
4 d 5 [5, 6, 7]
5 d 6 [5, 6, 7]
6 d 7 [5, 6, 7]