Использование оператора Or в пандах для присвоения значений? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть два кадра данных

df1

     a         b      c

0   Sussex    NaN     NaN

df2

     d         e      f       g

0   NaN    NaN       NaN     NaN

Я пытаюсь использовать оператор Or для назначения df3 ['i'] из df1 ['a'] или df2 ['d']

Мой желаемый вывод:

df3

         i
 0      sussex

Для одного значения я назначил df3 ['i'] = df2 ['d']

Ответы [ 3 ]

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

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

df3['i'] = df2['d'].item() or df1['a'].item()

Или в дополнение к ответу @ kerwei вы также можете использовать fillna:

df3 = df1.fillna(df2)
0 голосов
/ 26 февраля 2019

Ваш вопрос действительно неопределенный, но я предполагаю, что вы пытаетесь наложить 2 фрейма данных, и на выходе будет фрейм данных, где каждая ячейка заполнена значениями из df1 или df2, в зависимости от того, что не пусто.В этом случае индексирование столбцов для обоих фреймов данных должно совпадать, так что:

import pandas as pd

df1 = pd.DataFrame({'a':['sussex'], 'b':[None], 'c':[None]})
df2 = pd.DataFrame({'a':[None], 'b':[None], 'c':[None], 'd':[None]})

>>>df1.combine_first(df2)
        a     b     c   d
0  Sussex  None  None NaN
0 голосов
/ 26 февраля 2019

Вопрос не до конца понятен.Что я здесь?Если df1 ['a'] или df2 ['d'] является первой итерацией, является ли вторая итерация df1 ['b'] или df2 ['e']?Где заканчивается итерация?Долгое решение и не уверен, что это то, что вы ищете

def applymapfunction(df1,df2):
    df3 = pd.DataFrame()
    if not df1['a'].empty:
        df3[0] = df1['a']
        return df3
    else:
        df3[0]= df2['d']
        return df3

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