熊猫列多索引中的缺失值

Posted

技术标签:

【中文标题】熊猫列多索引中的缺失值【英文标题】:missing values in pandas column multiindex 【发布时间】:2020-10-20 20:00:33 【问题描述】:

我正在阅读这样的 pandas excel 表格:

使用

df = pd.read_excel('./question.xlsx', sheet_name = None, header = [0,1])

这会导致具有多索引的多索引数据帧。

这里的问题是空字段默认填充为'Title',而我更喜欢使用不同的标签。我不能跳过第一行,因为我正在处理更大的数据帧,其中第一行和第二行包含重复标签(因此使用了多索引)。

您的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

假设您想要空字符串而不是重复第一个标签,您可以阅读 2 行并直接构建 MultiIndex:

df1 = pd.read_excel('./question.xlsx', header = None, nrows=2).fillna('')
index = pd.MultiIndex.from_arrays(df1.values)

它给出:

MultiIndex([('Title',        '#'),
            (     '',    'Price'),
            (     '', 'Quantity')],
           )

顺便说一句,如果你想为空字段设置一个不同的标签,你可以把它用作fillna的参数。

然后,你只需读取剩余的数据,并手动设置索引:

df1 = pd.read_excel('./question.xlsx', header = None, skiprows=2)
df1.columns = index

【讨论】:

这似乎是正确的道路......但我遇到了一些麻烦。我认为您在第一个 sn-p 中不需要.index。另外,我不确定df1.index = index 是否正确——我们在这里处理的是多索引列。 是的,我在最后一行使用了df1.columns = index。谢谢。 @Vadim:你说得对,我在 4 行代码中写了 2 个错别字 :-( 是时候让我休息一下了...

以上是关于熊猫列多索引中的缺失值的主要内容,如果未能解决你的问题,请参考以下文章

如何按“熊猫”中的列获取缺失/NaN 数据的汇总计数?

如何按“熊猫”中的列获取缺失/NaN 数据的汇总计数?

将 numpy 数组复制到 Panda 多索引中(大小相同)

在多索引数据框中填充缺失的时间值

熊猫:使用最后可用的填充缺失值

python 检查熊猫df中是否有缺失值