循环遍历 Pandas DataFrame 会产生 ValueError

Posted

技术标签:

【中文标题】循环遍历 Pandas DataFrame 会产生 ValueError【英文标题】:Looping over a Pandas DataFrame yields a ValueError 【发布时间】:2021-04-04 18:59:04 【问题描述】:

我正在尝试遍历具有 71163 行的 Pandas DataFrame,并创建一个值低于 10000 的列表,以便我可以计算它们。到目前为止,我的代码是:

filter_heteroSNPs = []

for element in heteroSNPsSC05:  
  if element < 10000:
    filter_heteroSNPs.append(True)
  else:
    filter_heteroSNPs.append(False)

newarr = heteroSNPs[filter_heteroSNPs]

print(filter_heteroSNPs)
print(newarr) 

但这会返回以下异常:

ValueError: Item wrong length 71163 instead of 891938

有人可以帮我吗?

【问题讨论】:

请张贴数据的样子。当我们不知道 heteroSNPsSC05 是什么结构时,很难提供帮助。 列表只有一列 【参考方案1】:

因为您的迭代不正确。您需要在DF的哪一列进行比较?

例如,假设您需要比较列 'my_column' 中的值,那么:

filter_heteroSNPs = [True if value < 10000 else False for value in heteroSNPsSC05['my_column']

这将为您提供所需的过滤器(甚至快 10 倍)

【讨论】:

以上是关于循环遍历 Pandas DataFrame 会产生 ValueError的主要内容,如果未能解决你的问题,请参考以下文章

Pandas Dataframe 循环遍历列效率低下

pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快

pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快

循环遍历 df 字典以合并 Pandas 中的 df

在特定日期循环 Dataframe Pandas Python

pandas怎样对数据进行遍历