如何打开/ Python中转换CSV这样的字符串不是Unicode?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何打开/ Python中转换CSV这样的字符串不是Unicode?相关的知识,希望对你有一定的参考价值。
我有数字和字符串的各列的CSV文件。当我与pandas.read_csv
打开它,它总是给我的Unicode。什么办法可以让数据帧转换为非Unicode或将其转换为字符串(并保持浮动细胞作为浮动)?
我试着从字面上一切办法我能想到的,包括类似的问题#2一些答案。
包含:
df = pd.read_csv('xxxx.csv', encoding = 'utf-8')
这并没有在所有的工作。
我也试图改变与astype(str)
该列没有任何工作的D型。
然后我试图定义一个转换功能,再次对其进行编码:
def convert(input):
if isinstance(input, dict):
return {convert(key): convert(value) for key, value in
input.iteritems()}
elif isinstance(input, list):
return [convert(element) for element in input]
elif isinstance(input, unicode):
return input.encode('utf-8')
else:
return input
df = convert(df)
当我打电话df.index.unique()
,它总是显示:
Index([u'row_a', u'row_b', u'row_c'], dtype='object', name=u'column_a')
但我希望他们全部字符串。
任何建议?非常感谢你!
尝试:
df = pd.read_csv('xxxx.csv', dtype='str')
我觉得你有大熊猫被infering你的一些列的“对象”类型的问题,如果它发现至少有一个统一的对象就会推断它为Unicode。为了解决这个问题,你应该用它来检查哪些列的Unicode:
In [1] df.dtypes
Out[1]:
column1 unicode
column2 unicode
column3 unicode
再拿到类型:
types = df.apply(lambda x: pd.lib.infer_dtype(x.values))
并将其转换为字符串:
for col in types[types=='unicode'].index:
df[col] = df[col].astype(str)
大熊猫自动分配一个数据类型到基于列的内容数据中的帧的列。如果你想改变这种状况,就需要推断数据类型为每一列。调用这行代码为您的数据帧的每一列。
df["column_name"] = df['column_name'].astype('object')
在Python,字符串数据类型等效于大熊猫“对象”的数据类型。
为了您的列包含浮动,请拨打以下代码:
df["column_name"] = df['column_name'].astype('float64')
另外,这里是对大熊猫的数据类型的附加信息link。
您也可以通过调用df.dtypes
检查所有列的数据类型
以上是关于如何打开/ Python中转换CSV这样的字符串不是Unicode?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中转换、排序和保存到 CSV MS Access 数据库 .mdb 文件