python - 满足条件时停止应用

标签 python python-3.x pandas dataframe

我有一个包含 1,000 列和 3000 万个示例行的 pandas DataFrame。我需要在每一列上执行一些操作(比方说加法、乘法等)。如果操作后任何列中的某个值变为 0,那么我需要停止对剩余的列和行进一步应用操作。另外,我想知道它在哪一列和哪一行变成了 0。

我已经使用 iterrows 进行了一些检查,但由于数据量很大,因此存在性能问题。另外,iterrows 是否有任何替代方案可以申请?

ID   PID     PC   TID
10   1005   8017  3
11   10335  5019  2
12   1000   8017  1
13   243    8870  1
14   4918   8305  3
15   9017   8305  3

按列应用操作:

  • Col1 减 9。
  • Col2 减去 1000。
  • Col3 除以 100。
  • Col4 减 1。

在第二列上应用后,第三个值为 0,然后整个过程应该停止并返回第二列第三行。

输出: 如果执行按列操作:

ID   PID    PC     TID
1    5      8017   3
2    9335   5019   2
3    0      8017   1
4    243    8870   1
5    4918   8305   3
6    9017   8305   3

如果执行逐行操作:

ID   PID    PC      TID
1    5      80.17   2
2    9335   50.19   1
3    0      8017    1
13   243    8870    1
14   4918   8305    3
15   9017   8305    3

最佳答案

考虑到行比列多得多,而且矢量化操作要快得多,我建议如下:

for c in df.columns:
    res = <apply function on df[c]>
    if (res != 0).all(): # No zero found
        df[c] = res
        continue
    # Zero found - apply only up to it.
    df[c] = res[(res != 0).astype(int).cumsum() == 0] # Apply up to first 0
    break

关于python - 满足条件时停止应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50358598/

相关文章:

python - 将 csv 文件解析为文本文件

Python3 导入

python - 导入 pandas 时脚本挂起

python - 并行处理单独模块中的函数

python - 在python中使用查询时出现问题

python - 如何根据现有列的多个条件分配值?

Python Multiprocessing 遍历脚本

python - Git:在 repo 中 merge 一个文件夹

python - 错误 : Invalid Syntax on "def"

python - 将 2 列合并为 1 列