为什么我在python中使用apply map函数来替换标题名称中不需要的字符时出错

时间:2017-02-23 12:30:22

标签: python pandas

为什么我在python中使用apply map函数来替换标题名称中不需要的字符时会出错?

我的DF标题(名称)包含:

Day % Change        $ Opening_Price         $ Close_Price

我想要的是:

Day Change      Opening_Price       Close_Price

这是名字中的%符号和$符号。

我在尝试什么:

DF = DF.applymap(lambda x: x if not '$' in str(x) else x.replace('$', ''))
DF = DF.applymap(lambda x: x if not '%' in str(x) else x.replace('%', ''))

但上面给了我一个错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe3' in position 10: ordinal not in range(128)

1 个答案:

答案 0 :(得分:2)

我认为您可以使用str.replace,然后在必要时按strip删除开始和结束空白:

df.columns = df.columns.str.replace('[$%]', '').str.strip()
print (df)
Empty DataFrame
Columns: [Day % Change, $ Opening_Price, $ Close_Price]
Index: []

df.columns = df.columns.str.replace('[$%]', '').str.strip()

print (df)
Empty DataFrame
Columns: [Day  Change, Opening_Price, Close_Price]
Index: []