Динамическое изменение значения строки в Python - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть следующая информация в DataFrame в Python:

##    x1   x2   x3   x4   x5   colum
##0  206  214  021  122  554     2
##1  226  234  123  456  789     4
##2  245  253  558  855  123     5
##3  265  272  000  111  222     4
##4  283  291  214  589  996     1

и мне нужно создать новый столбец в зависимости от значения, содержащего столбец colum, следующим образом:

##    x1   x2   x3   x4   x5   colum   newColum
##0  206  214  021  122  554     2       214
##1  226  234  123  456  789     4       456
##2  245  253  558  855  123     5       123
##3  265  272  000  111  222     4       111
##4  283  291  214  589  996     1       283

Я не знаю, ясно ли я в своем запросе, благодарю, кто может мне помочь.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Использование pd.DataFrame.lookup и сопоставление целых чисел с метками столбцов:

df['new'] = df.lookup(df.index, 'x' + df['colum'].astype(str))

print(df)

    x1   x2   x3   x4   x5  colum  new
0  206  214   21  122  554      2  214
1  226  234  123  456  789      4  456
2  245  253  558  855  123      5  123
3  265  272    0  111  222      4  111
4  283  291  214  589  996      1  283
0 голосов
/ 12 сентября 2018

Использование numpy indexing:

df['new'] = df.values[np.arange(len(df)),  df['colum'] - 1]
print (df)
    x1   x2   x3   x4   x5  colum  new
0  206  214   21  122  554      2  214
1  226  234  123  456  789      4  456
2  245  253  558  855  123      5  123
3  265  272    0  111  222      4  111
4  283  291  214  589  996      1  283
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...