【问题标题】:Convert 3D array to pandas Panel data将 3D 数组转换为 pandas 面板数据
【发布时间】:2019-09-27 18:37:05
【问题描述】:

我想在 Pandas 中将 3D 数组转换为面板数据,但由于“TypeError:object() 不带参数”而出现错误

d = {'A': ['i1', 'i2', 'i3', 'i4', 'i5', 'i5', 'i1', 'i1', 'i5', 'i4'], 'B': ['c7', 'c6', 'c3', 'c1', 'c4', 'c7', 'c1', 'c4', 'c1', 'c4'], 'C': [8.123, 11, 2, 5, 3, -1, 0.5123, -0.1123, 0.3, 2]}
df = pd.DataFrame(data=d)
df1 = df.pivot_table(index='A', columns='B', values='C')
arr = df1.to_numpy()
diff = abs(arr[:, None] - arr)
pnl=pd.Panel(data=diff)
print(pnl)

输出是:

Traceback (most recent call last):
File "C:/<Project_path>/Test", line 16, in <module>
   pnl=pd.Panel(data=diff)
TypeError: object() takes no parameters

【问题讨论】:

  • Panel 自版本 0.20.0 起已弃用,您应该使用其他东西吗?
  • 使用分层索引

标签: python pandas numpy dataframe panel


【解决方案1】:

按照 cmets 中的建议,您应该/可以使用 MultiIndex 来存储您的 3D 数据:

pd.DataFrame(diff.reshape(-1,df1.shape[1]), 
             columns=df1.columns,
             index=pd.MultiIndex.from_product((df1.index, df1.index))
            )

输出:

B          c1   c3      c4   c6     c7
i1 i1  0.0000  NaN  0.0000  NaN  0.000
   i2     NaN  NaN     NaN  NaN    NaN
   i3     NaN  NaN     NaN  NaN    NaN
   i4  4.4877  NaN  2.1123  NaN    NaN
   i5  0.2123  NaN  3.1123  NaN  9.123
i2 i1     NaN  NaN     NaN  NaN    NaN
   i2     NaN  NaN     NaN  0.0    NaN
   i3     NaN  NaN     NaN  NaN    NaN
   i4     NaN  NaN     NaN  NaN    NaN
   i5     NaN  NaN     NaN  NaN    NaN
i3 i1     NaN  NaN     NaN  NaN    NaN
   i2     NaN  NaN     NaN  NaN    NaN
   i3     NaN  0.0     NaN  NaN    NaN
   i4     NaN  NaN     NaN  NaN    NaN
   i5     NaN  NaN     NaN  NaN    NaN
i4 i1  4.4877  NaN  2.1123  NaN    NaN
   i2     NaN  NaN     NaN  NaN    NaN
   i3     NaN  NaN     NaN  NaN    NaN
   i4  0.0000  NaN  0.0000  NaN    NaN
   i5  4.7000  NaN  1.0000  NaN    NaN
i5 i1  0.2123  NaN  3.1123  NaN  9.123
   i2     NaN  NaN     NaN  NaN    NaN
   i3     NaN  NaN     NaN  NaN    NaN
   i4  4.7000  NaN  1.0000  NaN    NaN
   i5  0.0000  NaN  0.0000  NaN  0.000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多