我有一个表单中的数据集:
A B
0 30 60538815980
1 30 7410811099
2 26 2238403510
3 26 2006613744
4 26 2006618783
5 26 2006613743
我想合并 A 的值匹配的行并生成类似的结果
C_1 C_2 C_3 C_4
A
26 2238403510 2006613744 2006618783 2006613743
30 60538815980 7410811099 NaN NaN
我曾尝试用连接或合并来表达它,但到目前为止都失败了。有什么简单的方法可以表达这一点,还是我必须使用 apply 并创建一个新的 DataFrame?
请您参考如下方法:
首先,根据 A 列创建一个 groupby 对象。然后创建一个新的数据框 df2,它使用 ix 根据来自的值 n 索引每个组的列 B A 列。将此数据帧的索引设置为等于 groupby 中的键值(即 A 列中的唯一值)。
最后,使用列表推导式将新列值设置为等于 C_1、C_2 等。
df = pd.DataFrame({'A': [30, 30, 26, 26, 26, 26],
'B': [60538815980, 7410811099, 2238403510,
2006613744, 2006618783, 2006613743]})
gb = df.groupby('A')
df2 = pd.DataFrame([df.ix[gb.groups[n], 'B'].values for n in gb.groups],
index=gb.groups.keys())
df2.columns = ["C_" + str(i + 1) for i in df2.columns]
df2.index.name = "A"
>>> df2
C_1 C_2 C_3 C_4
A
26 2238403510 2006613744 2006618783 2006613743
30 60538815980 7410811099 NaN NaN
