我在pandas数据框中读取了一个csv文件,并试图删除unicode字符。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')
谁能告诉我为什么会出现这种情况,如何解决?谢谢。
如果你真的需要删除列名中的 u
(因为这只是一个显示的问题)你可以做以下的事情。阴招:
from pandas import compat
compat.PY3 = True
df.columns
Index(['time', 'contact', 'address'], dtype='object')
我今天遇到了一个问题,用。df['var'] = df['var'].astype(str)
我在建立ML管道时也遇到了类似的问题。我的特性列表和名称都有Unicode。
特征
[u'Customer_id', u'Age',.....]
一种方法是使用str()函数。创建一个新的列表,并对每个值应用str函数。
features_new= [str(x) for x in features]
现在 features_new
列表中不会有任何Unicode字符。让我知道它是如何工作的。
这里有一种方法可以从列名中删除Unicode。
df.columns = [strip_non_ascii(x) for x in df.columns]
以下是函数 strip_non_ascii
删除Unicode。
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)