将 Pandas DataFrame 的行转换为列表形式

4
我有一个 pandas 数据框,格式如下:
    T1  T2
0   A   B
1   C   D
2   B   C
3   D   E
4   F   A

我想生成另一个 pandas 数据框,其中列出 T1 和 T2 中每个唯一项目各自拥有一行,并且该行具有一个名为唯一项目的列和一个包含原始数据框中与其共享一行的项目列表的列。例如,在这种情况下,我将寻找以下形式的内容:

    Name    List
0   A   [B, F]
1   B   [A, C]
2   C   [D, B]
3   D   [C, E]
4   E   [D]
5   F   [A]

请问是否有人能够建议一个适当的pandonic方式来完成这个任务?谢谢!

1个回答

3

如果我理解正确的话,需要交换列并使用 pandas.DataFrame.columns

df2 = df.copy()
df2.columns = df.columns[::-1]
new_df = pd.concat([df, df2])
new_df.groupby("T1")["T2"].apply(list).reset_index()

输出:

  T1      T2
0  A  [B, F]
1  B  [C, A]
2  C  [D, B]
3  D  [E, C]
4  E     [D]
5  F     [A]

这个答案似乎有与下面的答案相同的问题--假设有重复的行。[A B],[A B]和[B A]。在我的应用程序中,我希望A的列表包含[B,B,B](B的3个出现次数,不一定相邻)。 - avigupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接