Python Pandas 多索引名称警告

Posted

技术标签:

【中文标题】Python Pandas 多索引名称警告【英文标题】:Python Pandas Multiindex names warning 【发布时间】:2021-12-13 17:12:41 【问题描述】:

我正在为数据框创建多级列:

lst_of_tuples = [('A', 'X'), ('A', 'Y'), ('B', 'X'), ('B', 'Y')]
columns = pd.MultiIndex.from_tuples(lst_of_tuples, names=[None, None])

这似乎与the documenation 匹配,下面的示例(尽管我正在构建多级列,而不是索引):

index = pd.MultiIndex.from_tuples(tuples, names=["first", "second"])

我从 PyCharm 收到有关预期类型的​​警告,特别是在“名称”变量上:

预期类型 'Optional[Sequence[Hashable]]',改为 'list[None]'

我得到了我想要的结果,但我还是想清除这个警告。我不确定应该在这里输入什么类型的对象,因为文档看起来很清楚。这是一个 PyCharm 错误吗?提前感谢您提供任何见解!

【问题讨论】:

【参考方案1】:

使用 multiIndex.from_tubles 为列创建一个数据框。这些列包括一对多父子关系

 df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
                  columns=pd.MultiIndex.from_tuples(
                      [('a', 'b'), ('a', 'c'), ('d', 'b')],name=['first','second']))

输出

 first   a     d
 second  b  c  b
 0       1  2  3
 1       4  5  6
 2       7  8  9

【讨论】:

这肯定是pycharm的问题,因为python 3.8可以工作 PyCharm 和错误本质上警告您的是参数必须是 None 或 Sequence[Hash] ***.com/questions/39447741/… ***.com/questions/14535730/… Hashability 使对象可用作字典键和集合成员,因为这些数据结构在内部使用哈希值。因此,没有一个不能是可散列的

以上是关于Python Pandas 多索引名称警告的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python/Pandas 将多索引数据写入 excel 文件

以长格式保存具有不同级别名称的多索引列 Pandas 为 excel 格式

过滤多索引数据集(python/pandas)

Python/Pandas - 查询多索引列 [重复]

Python,pandas:如何从对称的多索引数据框中提取值

Python Pandas 按多索引和列排序