如何在Python中优化迭代大数据帧的代码

2024-07-03 07:44:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大熊猫数据框。它有数千列和超过一百万行。我想按行计算最大值和最小值之间的差值。请记住,有许多NaN值,有些行都是NaN值(但我仍然希望保留它们!)。在

我写了下面的代码。它很管用,但很费时:

totTime = []
for index, row in date.iterrows():
    myRow = row.dropna()
    if len(myRow):
        tt = max(myRow) - min(myRow)
    else:
        tt = None
    totTime.append(tt)

有什么方法可以优化它吗?我尝试使用以下代码,但遇到所有NaN行时出现错误:

^{pr2}$

如有任何建议,我们将不胜感激!在


Tags: 数据代码infordateindexnanrow
2条回答

关于迭代,我也有同样的问题。2分:

  1. 为什么不将NaN值替换为0?你可以这样做。它替换inf和nan值。在
  2. 看看这个This。也许你能理解,我有一个类似的问题,关于如何优化循环来计算实际行与前一行之间的去差。在

使用pythonfor循环遍历一个大的pandas.DataFramenumpy.ndarray,这通常是个坏主意。您应该在它们上使用可用的内置函数,因为它们是经过优化的,而且在许多情况下实际上不是用python编写的,而是用编译语言编写的。在您的例子中,您应该使用方法pandas.DataFrame.maxpandas.DataFrame.min,这两个方法都给了您一个选项skipna来跳过{}中的nan值,而无需手动删除它们。此外,您可以选择axis来最小化。所以您可以指定axis=1以获得沿列的最小值。在

这与@EdChum刚才在评论中提到的情况类似:

data.max(axis=1, skipna=True) - data.min(axis=1, skipna=True)

相关问题 更多 >