我有一个有10列和大约20,000,000行的数据框。 我需要逐行比较10列的值,并用新值创建5列。为此,我定义了一个由if函数组成的函数并应用它来测试每个函数。如何测试每列的列值?
例如:
>>> import pandas as pd
>>> df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[11,12,13,14,16], 'c':[21,22,23,24,25], 'd':[31,32,33,34,35])
>>> def cal1(row):
>>> v1=0
>>> v2=0
>>> if 0< row['a'] <2:
>>> v1=1
>>> if 11< row['b'] <14:
>>> v2=1
>>> return v1+v2
>>> def cal2(row):
>>> v1=0
>>> v2=0
>>> if 2<= row['a'] <4:
>>> v1=-1
>>> if 14<= row['b']<=16:
>>> v2=-1
>>> return v1+v2
>>> df['n1'] = df.apply(ca11, axis=1)
>>> df['n2'] = df.apply(cal2, axis=1)
我能得到答案这种方式,但我需要5个定义的函数,每个条件一个长长的清单。计算过于缓慢。 (实际数据应在所有10列上进行测试,并且至少有10个条件。)
有没有更好的方法来逐行测试每列中的数据?