gpt4 book ai didi

python - 将 pd.read_csv 跳过的行保存到单独的 DataFrame 中

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:47 25 4
gpt4 key购买 nike

代码示例:

data = 'a,b,c\n1,2,3\n4,5,6,7\n8,9,10'
pd.read_csv(StringIO(data), error_bad_lines=False)

Skipping line 3: expected 3 fields, saw 4

我想要的是获取跳过的行并将它们保存在其他地方,例如另一个 DataFrame 或数组。

我实际处理的每个文件的长度约为 8K 行,4 到 12 列,跳过的行包含我不想丢失的某些信息。

我尝试使用

try:
pd.read_csv(StringIO(data), error_bad_lines=False)
except(pd.parser.CParserError)

如何捕获“坏线”?

其中一个文件:http://www.pjm.com/pub/account/loadhryr/1998.txt

最佳答案

不确定官方(tm)方法是什么,但我经常传递名称,然后进行后处理。例如:

>>> pd.read_csv(StringIO(data), names=["a", "b", "c", "other stuff"], skiprows=1)
a b c other stuff
0 1 2 3 NaN
1 4 5 6 7
2 8 9 10 NaN

之后您可以使用 bool 过滤(例如df[df['other stuff'].notnull()])来选择具有额外数​​据的数据。

我什至做过类似的事情

>>> pd.read_csv(StringIO(data), names=range(10), header=None)
0 1 2 3 4 5 6 7 8 9
0 a b c NaN NaN NaN NaN NaN NaN NaN
1 1 2 3 NaN NaN NaN NaN NaN NaN NaN
2 4 5 6 7 NaN NaN NaN NaN NaN NaN
3 8 9 10 NaN NaN NaN NaN NaN NaN NaN

从过去开始,但是您必须确保在最后适本地转换数据类型,这样当您可以使用 float 时,就不会出现性能较慢的对象。不过,我通常只将其用作中间步骤,并立即写出格式更好的 csv,因此这并不重要。

(我想要一种“无损”数据读取方法,您不关心性能,只关心获取所有数据,但据我所知,已经有一个了。)

关于python - 将 pd.read_csv 跳过的行保存到单独的 DataFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191480/

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