【问题标题】:Handling unicode names in DataFrame处理 DataFrame 中的 unicode 名称
【发布时间】:2017-05-02 11:37:28
【问题描述】:

我想将 DataFrame 中的所有数据转换为大写。当我从列名开始转换时,出现此错误:

代码:

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'

【问题讨论】:

    标签: python pandas dataframe unicode


    【解决方案1】:

    在使用 Pandas 时,您需要避免 Python 中的 for 循环,并且通常还需要避免 map()。这些都是缓慢的做事方式,如果你想养成良好的习惯,你会尽可能避免它们。

    有可用于 Pandas 字符串序列的快速向量化字符串操作。在这种情况下,您需要:

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

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

    【讨论】:

    • 也许你认为df.columns = df.columns.str.upper() ;)
    • @jezrael:很公平,我改了。
    【解决方案2】:

    尝试使用列表推导而不是映射str.upper

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2010-09-08
      • 2013-01-19
      • 2016-02-24
      • 1970-01-01
      相关资源
      最近更新 更多