Как преобразовать строку в имя кадра данных pandas / python - PullRequest
0 голосов
/ 16 октября 2018

У меня есть 2 кадра данных (dfA, dfB)

У меня есть другой кадр данных dfC, в котором есть столбец с именем «SOURCE».Значения SOURCE будут либо dfA, либо dfB.

Я пытаюсь переходить строка за строкой в ​​dfC и, в зависимости от поля SOURCE, обновлять dfA или dfB.

Для этого я попытался создать переменную 'a', которая будет принимать значение SOURCE.Проблема в том, что a будет равно dfA или dfB (читается как строка).Я не могу использовать эту строку для вызова правильного фрейма данных (сгенерированная ошибка)

for i in [0, len(dfC.index)-1]:
    a = dfC.loc[i,'Source']
    temp = a[['colA', 'colB', colC']]][(a['movement_id']) == dfC.loc[i,'TEMP']]

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я предлагаю использовать pandas.DataFrame.update, который обновляет фрейм данных на основе индекса.

dfa = DataFrame([[2],[4]], index=[1,2], columns=['val'])
dfb = DataFrame([[4],[8]], index=[1,2], columns=['val'])
dfc = DataFrame([['dfa',-1],['dfb',-2],['dfa',-3]], index=[1,1,2], columns='dest','val'])

dfa.update(dfc[dfc['dest']=='dfa'])
dfb.update(dfc[dfc['dest']=='dfb'])

Использование цикла for в пандах обычно не рекомендуется.

0 голосов
/ 16 октября 2018

Просто используйте if-else в вашем цикле;

for ind in range(dfC.shape[0]):
   if dfC.loc[ind, 'SOURCE'] == 'dfA':
       "do what you want to dfA"
   if dfC.loc[ind, 'SOURCE'] == 'dfB':
           "do what you want to dfB"

Это звучит разумно?

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