Python Pandas 旋转:如何在第一列中分组并为第二列中的每个唯一值创建一个新列

Python Pandas pivoting: how to group in the first column and create a new column for each unique value from the second column

我在 Python 中使用 pandas,我正在尝试转换数据框。我有一个这样的数据框:

第 1 列 第 2 列
1 22
1 23
2 34
2 35
2 36
3 49

我想对第一列中的值进行分组,同时在不同的列中为属于第一列中分组值的值创建一个新的 column/attribute。我不知道第 2 列中属于第 1 列中唯一值的最大数量的值是多少。

第 1 列 列2_1 列2_2 列2_3
1 22 23 None/NaN
2 34 35 36
3 49 None/NaN None/NaN

我一直在寻找如何有效地做到这一点,但我可能缺乏找到好的结果的词汇。感谢任何帮助。

尝试:

df = (
    df.assign(
        temp=df.groupby('Column 1').cumcount() + 1
    )
    .pivot_table(
        index='Column 1',
        columns='temp',
        values='Column 2')
    .add_prefix('Column 2_')
    .rename_axis(columns=None)
    .reset_index()
)

根据@Henry 的建议,您可以直接将 Series 传递给 pivot_table:

df = (
    df.pivot_table(
        index='Column 1',
        columns=df.groupby('Column 1').cumcount() + 1,
        values='Column 2')
    .add_prefix('Column 2_')
    .reset_index()
)

输出:

   Column1  Column2_1  Column2_2  Column2_3
0        1       22.0       23.0        NaN
1        2       34.0       35.0       36.0
2        3       49.0        NaN        NaN