我正在处理具有超过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
请建议可以有效更新列值的方法。
谢谢。
答案 0 :(得分:0)
使用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