pandas 循环通过panda Dataframe 列时检查标志的性能影响

a64a0gku  于 2023-02-28  发布在  其他
关注(0)|答案(1)|浏览(138)

我正在编写一个程序,它可以对数据集列进行不同类型的计算。
目前有3种类型的计算由3个独立的函数执行,具体取决于在运行时为每个函数定义的标志。

import pandas as pd

dataframe = pd.read_csv("my_dataset.csv")
for column in dataframe.columns:
    if flag_operation_1:
        do_operation_1(dataframe[column])
    if flag_operation_2:
        do_operation_2(dataframe[column])
    if flag_operation_3:
        do_operation_3(dataframe[column])

它工作得很好,但是我知道一些数据集可能非常大,我想知道检查每个列的每个标志对速度有什么影响(知道整个数据集的标志保持不变,看起来像是浪费时间)。
它是可以忽略的吗?如果不是,有没有一种方法既可以检查所有标志一次,又可以在每列中只循环一次?

hgc7kmma

hgc7kmma1#

如果您觉得对标志的测试可能是一个性能问题,那么您可以考虑创建一个通过标志测试的方法列表,并且只调用那些方法。
也许是这样的:

import pandas

flags = [True, True, False]
methods = [
    lambda column: print("Hello"),
    lambda column: print(column),
    lambda column: print("World"),
]
tasks = [method for flag, method in zip(flags, methods) if flag]

dataframe = pandas.read_csv("my_dataset.csv")
for column in dataframe.columns:
    for task in tasks:
        task(column)

相关问题