Python 熊猫数据帧-如何将多行合并为一行

Python 熊猫数据帧-如何将多行合并为一行,python,pandas,Python,Pandas,我有一个以下格式的数据集: 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

我有一个以下格式的数据集:

    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

我试着用join或merge来表达它,但到目前为止都失败了。有没有简单的方法来表达这一点,或者我必须使用apply并创建一个新的数据帧?

首先,基于列
a
创建一个
groupby
对象。然后创建一个新的数据帧
df2
,它使用
ix
根据列
a
中的值
n
对每组的列
B
进行索引。将此数据帧的索引设置为与
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

我还建议使用
groupby
,但我认为我们可以使用
pivot
来简化事情。首先,我们用想要使用的列标签创建一个新的C列,然后我们调用
pivot

>>> df["C"] = "C_" + (df.groupby("A").cumcount() + 1).astype(str)
>>> df.pivot(index="A", values="B", columns="C")
C           C_1         C_2         C_3         C_4
A                                                  
26   2238403510  2006613744  2006618783  2006613743
30  60538815980  7410811099         NaN         NaN