我在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')
任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?感谢。
答案 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)