gpt4 book ai didi

python - Pandas Dataframe - (列重组)

转载 作者:行者123 更新时间:2023-12-04 08:04:17 27 4
gpt4 key购买 nike

我有一个包含 n 列的数据框。这些包含字母,一列包含的字母数量各不相同,一个字母可以出现在不同数量的列中。我需要 Pandas 数据框的代码来将工作表转换为以字母开头的列,行应该包含该字母所在的列的编号。
Link to example problem
enter image description here

  •   ABCDEF

  • ABDE。 11 1
    BBCC -> 2 2
    EFB。 3 3
    4 4
    该图像更好地描述了我的问题。预先感谢您的任何帮助。

    最佳答案

    使用 DataFrame.stack DataFrame.reset_index reshape ,然后 DataFrame.sort_values 和聚合 list s, 最后创建 DataFrame通过带有转置的构造函数:

    s=df.stack().reset_index(name='a').sort_values('level_1').groupby('a')['level_1'].agg(list)

    df1 = pd.DataFrame(s.tolist(), index=s.index).T
    print (df1)
    a a b c d e f
    0 1 1 1 1 3 2
    1 3 3 2 4 4 None
    2 None 4 None None None None
    或使用 GroupBy.cumcount 通过 DataFrame.pivot 进行计数器和 reshape :
    df2 = df.stack().reset_index(name='a').sort_values('level_1')

    df2['g'] = df2.groupby('a').cumcount()

    df2 = df2.pivot('g','a','level_1')
    print (df2)
    a a b c d e f
    g
    0 1 1 1 1 3 2
    1 3 3 2 4 4 NaN
    2 NaN 4 NaN NaN NaN NaN
    如有必要,最后删除索引和列名称:
    df1 = df1.rename_axis(index=None)
    df2 = df2.rename_axis(index=None, columns=None)

    关于python - Pandas Dataframe - (列重组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66305277/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com