Python: динамическая сумма столбцов для каждой строки - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть фрейм данных с 2 идентификаторами (ID1, ID2) и 3 числовыми столбцами (X1, X2, X3) и столбцом с именем «input» (всего 6 столбцов) и n строками.Для каждой строки я хочу получить индекс n-го столбца, чтобы n было последним временем, когда (x1 + x2 + xn ...> = 0) по-прежнему истинно.

Как я могу это сделатьв питоне?

В RI это было сделано с помощью:

tmp = data


for (i in 4:5)

{

data[,i]<-  tmp$input - rowSums(tmp[,3:i])

}

output<-  apply((data[,3:5]), 1, function(x) max(which(x>0)))

data$output <-  output

Я пытаюсь перевести это на Python.Какой может быть лучший способ сделать это?Таких строк может быть N, а M таких столбцов.

Пример данных:

ID1 ID2 X1  X2  X3  INPUT   OUTPUT  (explanation)       
a   b   1   2   3   3   2   (X1 = 1, x1+x2 = 3, x1+x3+x3 = 6 ... and after 2 sums, input< sums)     
a1  a2  5   2   1   4   0   (X1 = 5, x1+x2 = 7, x1+x3+x3 = 8 ... and even for 1 sum, input< sums)   
a2  b2  0   4   5   100 3   (X1=0, X1+X2=4, X1+X2+X3=9, ... even after 3 sums, input>sums)

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете использовать модуль Pandas, который очень эффективно обрабатывает это в Python.

import pandas as pd
#Taking a sample data here
df = pd.DataFrame([
              ['A','B',1,3,4,0.1],
            ['K','L',10,3,14,0.5],
            ['P','H',1,73,40,0.6]],columns = ['ID1','ID2','X2','X3','X4','INPUT'])
 #Below code does the functionality you would want.
df['new_column']=df[['X2','X3','X4']].max(axis=1)

Output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...