python - 错误 pd.pivot "MultiIndex.name must be a hashable type"

标签 python pandas

我正在尝试将类似于 R 的 tidyr::spread 的东西应用于我的 pandas 数据帧。我在某些地方看到人们使用 pd.pivot 但到目前为止我没有成功。

因此,在这个示例中,我有以下数据框 DF:

df = pd.DataFrame({'action_id' : [1,2,1,4,5],
               'name': ['jess', 'alex', 'jess', 'cath', 'mary'],
              'address': ['house', 'house', 'park', 'park', 'park'],
               'date': [ '01/01', '02/01', '03/01', '04/01', '05/01']})

它看起来怎么样:

enter image description here

好吧,所以我想要的是一个以“action_id”和“name”作为索引的多索引数据透视表,“传播”地址列并用“日期”列填充它。所以我的 df 看起来像这样:

enter image description here

我尝试做的是:

df.pivot(index = ['action_id', 'name'], columns = 'address', values = 'date')

我收到错误TypeError:MultiIndex.name必须是可散列类型

有人知道我做错了什么吗?

最佳答案

您不需要在pd.pivot中提及索引

这会起作用

import pandas as pd

df = pd.DataFrame({'action_id' : [1,2,1,4,5],
               'name': ['jess', 'alex', 'jess', 'cath', 'mary'],
              'address': ['house', 'house', 'park', 'park', 'park'],
               'date': [ '01/01', '02/01', '03/01', '04/01', '05/01']})

df = pd.concat([df, pd.pivot(data=df, index=None, columns='address', values='date')], axis=1) \
            .reset_index(drop=True).drop(['address','date'], axis=1)
print(df)

   action_id  name  house   park
0          1  jess  01/01    NaN
1          2  alex  02/01    NaN
2          1  jess    NaN  03/01
3          4  cath    NaN  04/01
4          5  mary    NaN  05/01

要达到你想要的效果,你需要进行分组

df = df.groupby(['action_id','name']).agg({'house':'first','park':'first'}).reset_index()
print(df)
   action_id  name  house   park
0          1  jess  01/01  03/01
1          2  alex  02/01    NaN
2          4  cath    NaN  04/01
3          5  mary    NaN  05/01

如果答案对您有帮助,别忘了采纳

关于python - 错误 pd.pivot "MultiIndex.name must be a hashable type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61086310/

相关文章:

python - 将复杂格式的文本解析为python数据表

python - PyTorch - 运行时错误 : Assertion 'cur_target >= 0 && cur_target < n_classes' failed

python - 如何在保持分辨率的同时将 2D float numpy 数组无损保存到灰度图像中?

Python 中 Java 的 Mahout 等价物

python - Pandas DataFrame - 提取两个字符串之间的字符串并包含第一个分隔符

Python Pandas Merge --- 哪些行没有合并?

python - 为 pandas DataFrame 滚动 idxmin/max

python - 正则表达式中的 `\A` 与 `^`(插入符号)之间是否存在差异?

python - 如何在 Python 中将元组更改为数组?

python - 在 IDA 中如何使用命令或脚本保存内存转储?