python-3.x - Pandas MultiIndex,其中一个因素是枚举
问题描述
我在使用其列是多索引的数据框时遇到问题,其中一个可迭代对象是 Enum。考虑代码:
MyEnum = Enum("MyEnum", "A B")
df = pd.DataFrame(columns=pd.MultiIndex.from_product(iterables=[MyEnum, [1, 2]]))
这引发
TypeError: 'values' is not ordered, please explicitly specify the categories order by passing in a categories argument.
这可以通过代替放置来解决:
df = pd.DataFrame(columns=pd.MultiIndex.from_product(iterables=[
pd.Series(MyEnum, dtype="category"),
[1, 2]
]))
但随后附加一行
df.append({(MyEnum.A, 1): "abc", (MyEnum.B, 2): "xyz"}, ignore_index=True)
加起来TypeError
和以前一样。
我已经尝试过这个主题的各种变化,但没有成功。(如果列不是多索引,而是枚举,则不会出现问题。)
(请注意,我可以通过使用 IntEnum 而不是 Enum 来避免这种情况。但是,我的列只是显示为数字 --- 这就是为什么我想首先使用 Enum,而不是 int。)
非常感谢!
解决方案
推荐阅读
- asp.net - 项目中的虚拟目录
- php - 将文本文件下载到服务器的内存但不起作用(html、php)
- php - org.json.JSONException:值电子邮件已经存在于 0 类型的 java.lang.String 无法转换为 JSONObject
- python - 计算连续天数python数据框
- c++ - 在 libcurl 连接池中预创建连接
- android - checkSelfPermission:在 API 22 之前如何做
- vue.js - 在共享主机上部署 Nuxt
- python - 是否可以在同一个管理页面上对同一个模型有两个多对多关系?
- sybase - 无法杀死带有“SELECT”命令的 Sybase 自己的进程(自己的进程)
- csv - CSV Parser,如何自动发现 col 名称和类型