Python pandas cut:如何将分类标签转换为字符串(否则无法导出到Excel)?
我使用pandas.cut()将连续变量离散成一个范围,然后根据结果分组 由于无法找出错误所在,经过多次咒骂之后,我了解到,如果我不向cut()函数提供自定义标签,而是依赖默认值,那么输出将无法导出到excel。如果我尝试这样做:Python pandas cut:如何将分类标签转换为字符串(否则无法导出到Excel)?,python,pandas,dataframe,export-to-excel,Python,Pandas,Dataframe,Export To Excel,我使用pandas.cut()将连续变量离散成一个范围,然后根据结果分组 由于无法找出错误所在,经过多次咒骂之后,我了解到,如果我不向cut()函数提供自定义标签,而是依赖默认值,那么输出将无法导出到excel。如果我尝试这样做: import pandas as pd import numpy as np writer = pd.ExcelWriter('test.xlsx') wk = writer.book.add_worksheet('Test') df= df= pd.Da
import pandas as pd
import numpy as np
writer = pd.ExcelWriter('test.xlsx')
wk = writer.book.add_worksheet('Test')
df= df= pd.DataFrame(np.random.randint(1,10,(10000,5)), columns=['a','b','c','d','e'])
df['range'] = pd.cut( df['a'],[-np.inf,3,8,np.inf] )
grouped=df.groupby('range').sum()
grouped.to_excel(writer, 'Export')
writer.close()
我得到:
raise TypeError("Unsupported type %s in write()" % type(token))
TypeError: Unsupported type <class 'pandas._libs.interval.Interval'> in write()
which it took me a while to decypher.
raisetypeerror(“write()中不支持的类型%s%type(令牌))
TypeError:write()中不支持的类型
我花了一段时间才把它摘下来。
如果我确实指定了标签:
df['range'] = pd.cut( df['a'],[-np.inf,3,8,np.inf], labels =['<3','3-8','>8'] )
df['range']=pd.cut(df['a'],[-np.inf,3,8,np.inf],labels=['8']))
然后一切正常。
关于如何在不指定自定义标签的情况下处理此问题,有何建议?在我工作的初始阶段,我倾向于不分配标签,因为我仍然不知道我想要多少个箱子——这是一种反复试验的方法,每次尝试分配标签都会很耗时
我不确定这是否算是一个bug,但至少它看起来像是一个缺乏文档记录的烦恼 使用astype(str)
:
在excel中输出:
range a b c d e
(-inf, 3.0] 6798 17277 16979 17266 16949
(3.0, 8.0] 33150 28051 27551 27692 27719
(8.0, inf] 9513 5153 5318 5106 5412
df['range']=pd.cut(df['a'],[-np.inf,3,8,np.inf],labels=['8'])。astype(str)
问题是如何在不明确指定标签的情况下完成。你可以省去标签,因为你还没有读过我的问题。如果我遗漏了标签,那么我就无法导出Excel-这就是问题所在!!我需要按照下面的答案进行astype(str),这正是我在第二条评论中建议的
range a b c d e
(-inf, 3.0] 6798 17277 16979 17266 16949
(3.0, 8.0] 33150 28051 27551 27692 27719
(8.0, inf] 9513 5153 5318 5106 5412