pandas.to_csv乱码、丢失行、自动换行如何处理

pandas.to_csv乱码、丢失行、自动换行如何处理

问题描述

乱码

python pandas的数据在代码中并未乱码,使用panda.to_csv保存后,用excel打开乱码。

自动换行

用excel打开文件,发现特别长的文本会自动换行,导致整个数据格式乱掉。用pandas.read_csv再次读取发现文件格式同样乱掉,即一列中有其他列的值。

丢失行

解决完自动换行问题后,发现丢失行问题仍存在。用excel打开文件,发现行数对不上,丢失数行。使用pandas.read_csv读取文件发现文件行数没少。

解决办法

乱码

假定数据框对象为df,设置参数encoding=‘utf-8-sig’

df.to_csv('df.csv',index=False,encoding='utf-8-sig')

自动换行

参考两个blog,但并未解决;后面自己测试出的方法。
已有办法,但有缺陷。将文本保存至excel而不是CSV,可以解决自动换行,但是excel会自动删除超长的文本
保存至excel代码如下:

#import openpyxl
import xlsxwriter
df.to_excel(base_path + 'result.xlsx', engine='xlsxwriter', index=False, encoding='utf-8')

代码参考保存excel
引擎设置为openpyxl保存xlsx会失败,可能因为自动换行的文件格式是乱的。
保存后如blog所讲,excel删除了过长文本。

正确做法
将sep设置为制表符"\t"即可

df.to_csv('df.csv',index=False,sep='\t',encoding='utf-8-sig')

丢失行

丢失行一部分原因是因为换行后,读取数据,清洗了空值所致。但是我解决完换行问题后依然存在,read_csv读取却正常。后来用Excel导入数据功能即可解决。

有帮助记得点赞收藏哦~

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是的,`pandas.read_csv` 和 `np.genfromtxt` 都可以用于读取数据文件,但是它们在读取和处理数据时有一些区别。 `pandas.read_csv` 是 `pandas` 库中的函数,它专门用于读取和解析 CSV 文件。它返回的对象是 `pandas` 的 `DataFrame`,可以方便地对数据处理和分析。对于大多数常见的数据文件,`read_csv` 函数提供了更多的灵活性和功能,比如处理缺失值、选择特定的列、指定数据类型等。 `np.genfromtxt` 是 `numpy` 库中的函数,用于读取各种类型的文本文件。它返回的对象是一个 `numpy` 的多维数组(`ndarray`)。虽然 `genfromtxt` 函数也可以处理 CSV 文件,但相对于 `read_csv`,它的功能较为简单,不提供像处理缺失值、选择特定列等高级功能。 在数据类型方面,两者的默认为是有所不同的。`np.genfromtxt` 函数根据数据内容进类型推断,默认情况下,它将尝试将所有数据解析为浮点数。而 `pandas.read_csv` 函数会根据不同列的数据内容进类型推断,并尽可能地保持原始数据类型。 您可以通过显式指定 `dtype` 参数来控制数据类型,以确保读取的数据与您的期望一致。无论是使用 `read_csv` 还是 `genfromtxt`,在读取数据之后,您都可以根据需要进进一步的数据类型转换和处理。 总之,`pandas.read_csv` 和 `np.genfromtxt` 都是常用的读取数据文件的函数,但它们在功能和默认为方面略有不同。具体使用哪个函数取决于您的需求和个人偏好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值