无法从pandas中的列名中删除unicode char

时间:2015-02-16 05:29:47

标签: python unicode pandas

我在pandas dataframe中读过一个csv文件,我试图从列名中删除unicode char u ,但没有运气。

fl.columns
Index([ u'time', u'contact', u'address'], dtype='object')

headers=[ 'time', 'contact', 'address']
fl=pandas.read_csv('file.csv',header=None,names=headers)

仍然无法正常工作

fl.columns
Index([ u'time', u'contact', u'address'], dtype='object')

即使重命名也不起作用

fl.rename(columns=lambda x:x.replace(x,x.value.encode('ascii','ignore')),inplace=True)
fl.columns
Index([ u'time', u'contact', u'address'], dtype='object')

任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?感谢。

4 个答案:

答案 0 :(得分:4)

如果您确实需要删除u(因为这只是一个显示问题),您可以执行以下非常脏的技巧

from pandas import compat

compat.PY3 = True

df.columns
Index(['time', 'contact', 'address'], dtype='object')

答案 1 :(得分:0)

我今天遇到了一个问题并使用了:df['var'] = df['var'].astype(str)

答案 2 :(得分:0)

在构建ML管道时,我遇到了类似的问题。我的功能列表包含Unicode和名称。

功能

[u'Customer_id', u'Age',.....]

摆脱它的一种方法是使用str()函数。通过将str函数应用于每个值来创建一个新列表。

features_new= [str(x) for x in features]

现在features_new列表将没有任何Unicode字符。让我知道它是如何工作的。

答案 3 :(得分:-1)

以下是从列名中删除Unicode的一种方法:

df.columns = [strip_non_ascii(x) for x in df.columns]

以下是删除Unicode的函数strip_non_ascii

def strip_non_ascii(string):
''' Returns the string without non ASCII characters'''
stripped = (c for c in string if 0 < ord(c) < 127)
return ''.join(stripped)