Как обновить значения в нескольких столбцах в DataFrame при условии, что другой использует оператор присваивания? - PullRequest
0 голосов
/ 26 июня 2019

Необходимо обновить один DataFrame S:

n ii      a  b     c
0 True   10 11  1.20 
1 False   2  0   NaN
2 True   34 75  2.14
3 True   22 88  0.02

из другого DataFrame T с другим набором столбцов

 a  b     c
 8 13  1.19
31 72  2.10
20 83  0.05

Возможно ли иметь S обновлено в функции с одним оператором присваивания строки?

def process(S):
    ii = S.ii
    # ... internal calculations that produce T
    columns = ['a', 'b', 'c']
    S[ii][columns] = T[columns] # < ----- in-place update

Что process работает в режиме передачи по ссылке, оставляя S обновленным после вызова

process(S)

1 Ответ

0 голосов
/ 26 июня 2019

Попробуйте вернуть фрейм данных:

    def process(S):
        ii = S.ii
        # ... internal calculations that produce T
        columns = ['a', 'b', 'c']
        S.loc[ii, columns] = T[columns] # < ----- in-place update
        return S

И вызвать функцию следующим образом:

    S = process(S)
...