У меня есть следующий код:
import random
import pandas as pd
import numpy as np
def countCol(row):
count = 0
for c in range(1, 7):
if (row['D' + str(c)] < 0):
count = count + 1
return(count)
data = {'ID': random.sample(range(1, 50), 5),
'D1': random.sample(range(-5, 5), 5),
'D2': random.sample(range(-5, 5), 5),
'D3': random.sample(range(-5, 5), 5),
'D4': random.sample(range(-5, 5), 5),
'D5': random.sample(range(-5, 5), 5),
'D6': random.sample(range(-5, 5), 5)
}
df = pd.DataFrame(data, columns = ['ID', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6'])
df['Count'] = df.apply(countCol, axis=1)
display(df)
Из кода очевидно, что я хотел бы подсчитать количество столбцов, значение которых меньше нуля. Однако в коде используется для l oop и функция apply, что заставляет меня думать, что это очень неэффективный подход для решения этой проблемы.
Есть ли более векторизованный или более быстрый подход?