首页 > 解决方案 > 迭代数据框中的行的最有效方法是什么?

问题描述

我正在处理一个超过 1000 万行的数据集。作为数据工程过程的一部分,我想更新一列,它满足其他两列中的条件。

我是通过以下方式完成的,但是由于记录数量很大,因此执行起来需要很长时间。

    for i in df1.index:
       val1, val2= 0,0
       val1 = df1.iat[i,6]
       val2 = df1.iat[i,7]

       if val1 < 270.37 and val2 < 2.5:
          df1.at[i,'ppt_type']= 1
       elif val1<270.37 and val2>=2.5 and val2<7.6:
          df1.at[i,'ppt_type']=2
       else:
          df1.at[i,'ppt_type']= 3

请提出可以有效更新列值的方法。

谢谢。

标签: pythonpandasdataframedata-science

解决方案


使用 numpy.where() 可以根据不同的列组合不同的条件。

import numpy as np
import pandas as pd

data = [{'a': 1, 'b': 2, 'c':3},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)

a   b   c
1   2   3
5   10  20

df.a = np.where((df.b >=10 ) & (df.c <= 30),1,df.a)

a   b   c
1   2   3
1   10  20

推荐阅读