【问题标题】:Unusual reshaping of Pandas DataFramePandas DataFrame 的异常重塑
【发布时间】:2017-06-12 04:56:11
【问题描述】:

我有一个这样的 DF:

df = pd.DataFrame({'x': ['a', 'a', 'b', 'b', 'b', 'c'],
                   'y': [1, 2, 3, 4, 5, 6],
                 })

看起来像:

   x  y
0  a  1
1  a  2
2  b  3
3  b  4
4  b  5
5  c  6

我需要重塑它以保持 'x' 列的唯一性:

   x    y_1  y_2  y_3
0  a    1    2    NaN
1  b    3    4    5
2  c    6    NaN  NaN

所以 'y_N' 列的最大 N 必须等于

max(df.groupby('x').count().values)

并且 x 列必须包含唯一值。

现在我不知道如何获取 y_N 列。

谢谢。

【问题讨论】:

    标签: python pandas pivot reshape


    【解决方案1】:

    您可以使用pandas.crosstabcumcount 列作为columns 参数:

    (pd.crosstab(df.x, df.groupby('x').cumcount() + 1, df.y, 
                aggfunc = lambda x: x.iloc[0])
       .rename(columns="y_{}".format).reset_index())
    

    【讨论】:

    • 谢谢!绝妙的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2019-08-29
    相关资源
    最近更新 更多