在Python 2.x下,无法从pandas的列名中删除unicode字符。

问题描述 投票:6回答:4

我在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')

谁能告诉我为什么会出现这种情况,如何解决?谢谢。

python pandas unicode character-encoding python-2.x
4个回答
5
投票

如果你真的需要删除列名中的 u (因为这只是一个显示的问题)你可以做以下的事情。阴招:

from pandas import compat

compat.PY3 = True

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

0
投票

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


0
投票

我在建立ML管道时也遇到了类似的问题。我的特性列表和名称都有Unicode。

特征

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

一种方法是使用str()函数。创建一个新的列表,并对每个值应用str函数。

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

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


-1
投票

这里有一种方法可以从列名中删除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)
© www.soinside.com 2019 - 2024. All rights reserved.