【问题标题】:converting 3D pandas dataframe to 2d [duplicate]将 3D pandas 数据帧转换为 2d [重复]
【发布时间】:2019-05-17 20:30:13
【问题描述】:

我有一个具有 2 级索引和一列的 3D 数据框,如下所示:

          col1
0   0      67.23
0   1      7382
0   2      43
    .
    .
0   8002   54
0   8003   87
1   0      348
1   1      83
1   2      234
    .
    .
1   8002   23
1   8003   87
....
9   0      348
9   1      833
9   2      43433
    .
    .
9   8002   23
9   8003   87

第一级有 10 个索引,每个第二级有 8004 个元素。我需要将其重塑为二维数据框,如下所示:

    0 | 1 | 2 | 3 | ... | 8000 | 8001 | 8002 | 8003
--------------------------------------------------
0     |   |   |   |     |      |      |      | 
1     |   |   |   |     |      |      |      |       
2     |   |   |   |     |      |      |      |       
.     |   |   |   |     |      |      |      | 
.     |   |   |   |     |      |      |      | 
8     |   |   |   |     |      |      |      |       
9     |   |   |   |     |      |      |      |       

为此,我创建了一个新索引:new_idx = pd.Index(range(0,10))

新列为:cols = range(0,8004)

然后尝试使用pivot如下:

2d_df = df.pivot(index=new_idx, columns=cols, values='var1')

但这给了我一个错误:Int64Index([0,1,2,3,4,5,6,7,8,9], dtype='int64') not in index。我该怎么做?

【问题讨论】:

  • 你试过df.unstack(1) 吗?
  • 谢谢!这就是我需要的!

标签: python pandas dataframe pivot


【解决方案1】:

尝试使用DataFrame.unstack - 请记住,如果您有重复的索引,这将不起作用。

df_2d = df.unstack(1)

然后使用以下方法修复列级别:

  df_2d.columns = df_2d.columns.droplevel(0)

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多