我有一个大熊猫数据框。它有数千列和超过一百万行。我想按行计算最大值和最小值之间的差值。请记住,有许多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}$如有任何建议,我们将不胜感激!在
关于迭代,我也有同样的问题。2分:
使用}中的
python
for
循环遍历一个大的pandas.DataFrame
或numpy.ndarray
,这通常是个坏主意。您应该在它们上使用可用的内置函数,因为它们是经过优化的,而且在许多情况下实际上不是用python编写的,而是用编译语言编写的。在您的例子中,您应该使用方法pandas.DataFrame.max和pandas.DataFrame.min,这两个方法都给了您一个选项skipna
来跳过{nan
值,而无需手动删除它们。此外,您可以选择axis
来最小化。所以您可以指定axis=1
以获得沿列的最小值。在这与@EdChum刚才在评论中提到的情况类似:
相关问题 更多 >
编程相关推荐