Pandas Multiple headers DataFrame Stack TypeError

问题描述 投票:0回答:1

我尝试使用2个标头堆叠DataFrame时遇到问题。这是我的df:

import pandas as pd

multicol = pd.MultiIndex.from_tuples([('Car', 'Megane'), ('Car', 5008)])
df = pd.DataFrame([[1, 2], [2, 4]], index=['Diesel', 'Escence'], columns=multicol)

当我尝试堆叠此df时,我有以下错误:

TypeError: '<' not supported between instances of 'str' and 'int'

我认为这个错误是由于我的第二个标题包含字符串和int。问题是我的实际df来自Excel文件。

如何转换我的第二个标题字符串?

python pandas
1个回答
1
投票

你的猜测是正确的。如果您将所有类型更改为str,它可以正常工作:

df.columns = pd.MultiIndex.from_tuples([(str(c), str(v)) for c, v in df.columns.values])
>>> df.stack()

                Car
Diesel  5008    2
        Megane  1
Escence 5008    4
        Megane  2

这里使用df.columns.values访问元组,然后使用列表推导将其变为字符串元组,最后使用pd.MultiIndex.from_tuples进行回调。

© www.soinside.com 2019 - 2024. All rights reserved.