当前位置: 首页 > 知识库问答 >
问题:

Pandas数据帧的迭代[重复]

穆浩皛
2023-03-14
for i in range(working.shape[0]):
    for j in range(1, working.shape[1]):
        working.iloc[i,j] = (100 - working.iloc[i,j])*100

在编程方面,我是一个新手,特别是熊猫。我也很抱歉,我问了一个已经在SF上提到的问题:我并不真正理解这个问题的现有答案。可能重复,但这个答案对新手来说很容易理解,如果不太全面的话。

共有1个答案

楚翰
2023-03-14

迭代数据流的(最佳实践)正确方法是什么?

有几种方法(例如iterrows),但一般来说,您应该不惜一切代价避免迭代。pandas为矢量化操作提供了几种工具,这些工具几乎总是比迭代解决方案更快。

您提供的示例可以使用iloc以以下方式向量化:

working.iloc[:, 1:] = (100 - working.iloc[:, 1:]) * 100
from timeit import Timer

working = pd.DataFrame({'a': range(50), 'b': range(50)})


def iteration():
    for i in range(working.shape[0]):
        for j in range(1, working.shape[1]):
            working.iloc[i, j] = (100 - working.iloc[i, j]) * 100


def direct():
    # in actual code you will have to assign back to working.iloc[:, 1:]
    (100 - working.iloc[:, 1:]) * 100


print(min(Timer(iteration).repeat(50, 50)))
print(min(Timer(direct).repeat(50, 50)))
0.38473859999999993
0.05334049999999735
 类似资料:
  • 我有一个来自熊猫的: 输出: 现在我要迭代这个帧的行。对于每一行,我希望能够通过列的名称访问其元素(单元格中的值)。例如: 有可能在熊猫身上做到这一点吗? 我发现了这个类似的问题。但它并没有给我我需要的答案。例如,在那里建议使用: 或 但我不理解对象是什么,以及如何使用它。

  • 我有一个熊猫数据框,看起来像这样(它是一个相当大的) 现在我想逐行迭代,当我遍历每一行时,每一行中的的值可能会根据某些条件而改变,我需要查找另一个数据帧。 现在,我如何在迭代时更新它。尝试了一些没用的东西。 这些方法似乎都不管用。我看不到数据框中更新的值。

  • 我需要对pandas数据帧进行迭代,以便将每一行作为带有的函数(实际上是类构造函数)的参数传递。这意味着每一行都应该像字典一样,具有键、列名和值(每行对应的值)。

  • 数据帧: 我有一段代码逐列遍历数据帧: 我需要删除它是NaN的行。我该怎么做?我已经尝试了. isnull()和. Notnull(),但它们返回错误

  • 我有一个pandas数据帧,如下所示: 我希望将第0行添加到数据帧的末尾,并获得如下所示的新数据帧: 我在熊猫身上能做什么来做到这一点?

  • 我尝试在做了一些转换和过滤后将很多CSV文件加入到一个数据帧中,当我对sn2数据帧使用append方法时,导出的CSV包含我想要的所有数据,但是当我对sn3数据帧使用append方法时,只有最后一个CSV的数据被导出,我错过了什么?