python - 如何在 Python 中打开/转换 CSV,使字符串不是 unicode?
问题描述
我有一个包含各种数字和字符串列的 CSV 文件。当我用它打开它时,pandas.read_csv
它总是给我 unicode。有什么方法可以将数据帧转换为非 unicode 或将它们转换为字符串(并将浮点单元格保持为浮点数)?
我已经尝试了所有我能想到的方法,包括一些类似 Stackoverflow 问题的答案。
包含:
df = pd.read_csv('xxxx.csv', encoding = 'utf-8')
那根本行不通。
我也尝试过用astype(str)
That didn't work 更改该列的 dtype。
然后我尝试定义一个转换函数来再次对其进行编码:
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')
但我希望它们都在字符串中。
有什么建议吗?非常感谢!
解决方案
我认为您的问题是 pandas 将您的某些列推断为“对象”类型,如果它发现至少一个 unicode 对象,它将推断为 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)
推荐阅读
- reactjs - 为 API 授权 SPA
- hive - 如何从 hive 中的 Struct Array 中获取值
- python - 链表python中的检索函数
- python - 检查数据框中多列的最新值
- javascript - 无法在“DOMWindow”上执行“postMessage”
- android - 如何在某些设备上启用 enableShutterSound?
- pandas - 循环遍历 select 语句中的多个项目 - Pandas
- reactjs - 如何对历史回退功能设置条件?
- go - 从 rabbitmq 获取已发布消息的响应。戈朗
- javascript - AddEventListener 事件多次调用