gpt4 book ai didi

Python:如何根据两个不同列中的大于条件删除文本文件中的数据行?

转载 作者:行者123 更新时间:2023-11-30 21:58:50 25 4
gpt4 key购买 nike

我试图从一个文本文件中删除行,该文件的数据由 23 列和至少 6000 行组成。我想删除第 14 列中值大于 41.54 的所有行,但仅当第 13 列中也有大于 49.97 的值时才删除。这样,不会删除第 13 列中值大于 41.54 的所有行,而只会删除删除同时具有这两个条件的行。

我添加了我开始时仅删除第 14 列中值大于 41.54 的行的内容。这些列没有名称。

import pandas as pd
data = pd.read_csv('F625W8.txt', sep=" ", header=None)
df = df[df.columns[13] > 41.54]

但这给了我这个错误:ParserError:标记数据时出错。 C 错误:第 15 行预期有 61 个字段,但看到了 64

我如何编辑它以包含我需要的条件?我对 Python 非常陌生,它是我唯一有点熟悉的语言。先感谢您!下面是数据实际情况的示例。

Example of what the contents of the file looks like

最佳答案

文本不整洁,因此您会收到此错误。看起来数据从第 23 行开始,因此:

import pandas as pd
data = pd.read_csv('F625W8.txt', sep=" ", header=None, skiprows=23)
df = df[df.columns[13] > 41.54]

skiprows 顾名思义,在读取之前跳过其参数之前的所有行。 编辑:您还可以使用comment跳过以#

开头的行

可以采取替代方法,使用 error_bad_lines 参数删除包含太多字段的行,或使用 warn_bad_lines 对警告执行相同的操作。 skipfooter 跳过底部的行,而 nrows 限制要读取的行数。最后,usecols 可以限制读取哪些列。通过混合和匹配这些参数的使用,您可以对从文件中读取的数据进行细粒度控制。

编辑:尝试我的建议后,您表示这可以让您加载数据,但您在执行下一行时遇到问题 df = df[df.columns[13] > 41.54 ]

简单的答案是df.columns是一个字符串数组(pandas索引)。所以您正在将字符串与数字进行比较。以下方法可行,但可能只会导致您遇到下一个问题。

df = df[df[df.columns[13]] > 41.54]

例如,如果该列中的任何值无法与 float 进行比较,您将收到相同的错误。

import pandas as pd
df = pd.DataFrame({"d": [4, 5, 6, 7, 8, 9,], "x": [4,5,6,7,8,"nine"]})

df = df[df["x"] > 7] # TypeError: '>' not supported...
df = df[df["d"] > 7] # Runs fine

在这种情况下,您需要转换为具有这些字符串值的内容,可能通过使用 Series.apply 来查看 here .

关于Python:如何根据两个不同列中的大于条件删除文本文件中的数据行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793588/

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