当我尝试用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文件。
如何转换第二个头字符串?
发布于 2018-05-18 15:59:23
你猜得对。如果将所有类型更改为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进行设置。
https://stackoverflow.com/questions/50415052
复制相似问题