我试图从一个文本文件中删除行,该文件包含23列和至少6000行的数据。我想删除第14列中值大于41.54的所有行,但仅当第13列中的值也大于49.97时。这样就不会删除column13中值大于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:error标记数据。C错误:第15行应该有61个字段,saw 64
如何编辑此项以包括我需要的条件?我对Python非常陌生,而且它是我唯一一种模糊熟悉的语言。提前谢谢你!下面是数据的实际外观示例。在
文本不整齐,因此会出现此错误。数据似乎从第23行开始,因此:
^{1}$skiprows
就像它听起来一样,在读取参数之前跳过所有行。Edit:您还可以使用comment
跳过以#
开头的行也可以使用
error_bad_lines
参数来删除字段太多的行,或者使用warn_bad_lines
对警告执行相同的操作。skipfooter
跳过底部的行,nrows
限制要读取的行数。最后,usecols
可以限制要读取的列。通过混合和匹配这些参数的使用,您可以对从文件中读取的数据进行细粒度控制。在编辑:在尝试了我的建议之后,您指出这允许您加载数据,但是您在处理下一行
df = df[df.columns[13] > 41.54]
简单的答案是
^{pr2}$df.columns
是一个字符串数组(pandas index)。所以你要把一个字符串和一个数字进行比较。下面的方法可行,但它可能会导致下一个问题。在例如,如果不能将该列中的任何值与
float
进行比较,则会得到相同的错误。在在本例中,您需要转换为具有这些字符串值的内容,可能需要使用
Series.apply
,您可以查看here。在相关问题 更多 >
编程相关推荐