我尝试使用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文件。
如何转换我的第二个标题字符串?
你的猜测是正确的。如果您将所有类型更改为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
进行回调。