我有一個有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個條件。)
有沒有更好的方法來逐行測試每列中的數據?