gpt4 book ai didi

python - Pandas:read.csv() - 只读具有特定列长度的行

转载 作者:行者123 更新时间:2023-12-01 09:26:25 26 4
gpt4 key购买 nike

我有大约 5 万行的大型 .csv 文件,其中包含 2,000 列的数据,然后是大约 20 万行,其中包含 6,000 列。

我正在导入多个文件:

pd.concat((pd.read_csv(f,index_col='Unnamed: 0', error_bad_lines=False) for f in file_list))

这可能会在 6,000 列的第一行上给出错误,而它预计只有 2,000 列,或者通过添加 error_bad_lines=False 它会跳过所有 6,000 列行。

在这种情况下,如果有必要,我很乐意丢弃所有 2,000 列行。有什么方法可以用 pandas 做到这一点吗?

最佳答案

正如您所发现的,read_csv 从第一行获取其预期长度,并且仅将过长的行视为“坏”;列太少的行用 NA 填充。根据具体情况,有一些可能适合您的解决方案:

跳过短行。

如果您知道将有多少个 2,000 列的行,特别是如果每​​个文件都相同,请使用 skiprows 从 6,000 列部分的开头开始阅读。

阅读所有内容,然后删除坏行。

这需要一些努力,因为正如您所发现的,pandas 使用文件的第一行来确定预期字段的数量;您需要添加包含 6,000 列的标题或将正确长度的 names 传递给 read_csv 。这将导致您的 2,000 列行填充大量 NA 值,之后您可以使用 dropna 和适当的阈值来删除包含超过 4,000 个 NA 的行。

事先对文件进行一些预处理

如果这是一次性情况,您只需要处理当前的一组文件,并且将来不会遇到新的文件,并且您可以通过命令行访问文件所在的位置,则它是一行 awk拉出所需长度的线:

awk -F, 'NF==6,000" file.csv > fixed_file.csv

关于python - Pandas:read.csv() - 只读具有特定列长度的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50349287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com