在DataFrame中处理Unicode名称



我想将数据框中的所有数据转换为大写。当我从列名开始转换时,我会收到此错误:

代码:

xl = pd.ExcelFile(target_processed_directory + filename)
# check sheet names
print(xl.sheet_names[0])
# sheet to pandas dataframe
df = xl.parse(xl.sheet_names[0])
# make whole dataframe uppercase
df.columns = map(str.upper, df.columns) 

错误:

TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode'

使用pandas时,您需要避免python中的 for循环,并且通常也需要避免使用map()。这些是做事缓慢的方法,如果您想建立良好的习惯,就可以避免使用它们。

有快速的矢量化字符串操作可用于熊猫串序列。在这种情况下,您想要:

df.columns = df.columns.str.upper()

文档:http://pandas.pydata.org/pandas-docs/stable/text.html

尝试使用列表理解而不是映射str.upper

df.columns = [c.upper() for c in df.columns]

在Python 2.7中,尽管方法的名称相同,但字符串和Unicode之间的区别使您无法将字符串方法应用于Unicode对象。

最新更新