加速DataFrame.mask()迭代

2024-09-30 10:39:47 发布

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

是否有比使用.mask()更快的方法对某些数据帧列执行条件计算?下面显示的代码似乎可以工作,但在使用大型数据集时速度可能会很慢

def inversing(column):
    DF = pd.read_csv('DataFrame.csv')
    DF[column] = DF[column].mask(DF[column] !=0, 1/DF[column])

columns_to_inverse = ['a','b','c']
inverting(columns_to_inverse)

Tags: columnscsvto数据方法代码dfdef
1条回答
网友
1楼 · 发布于 2024-09-30 10:39:47

有多种方法可以实现这一点,但直接的方法是使用lambda: df[column].apply(lambda x: 1/x if x != 0 else x)

jupyter笔记本中的完整代码和计时:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(-50, 50, 100))
%timeit df[0].mask(df[0] !=0, 1/df[0])
%timeit df[0].apply(lambda x: 1/x if x != 0 else x)

在我的机器上产生:

1.58 ms ± 6.57 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
324 µs ± 642 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)

相关问题 更多 >

    热门问题