Или ключевое слово для серии панд - PullRequest
0 голосов
/ 13 декабря 2018

Я не понимаю, как получить эквивалент a = b or c с сериями панд.

MWE:

# basic python
b = None
c = 'not None'
a = b or c
assert a == c

# expected behaviour in pandas
df = pd.DataFrame({'b' : [None, 'not None'], 'c': ['not None', 'other']})
df.assign(a=lambda df: df.b | df.c)

# raise TypeError: unsupported operand type(s) for |: 'str' and 'bool'

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Использование bfill, если у вас более двух столбцов

df['a']=df.bfill(1).b
df
Out[16]: 
          b         c         a
0      None  not None  not None
1  not None     other  not None
0 голосов
/ 13 декабря 2018

Вы можете использовать fillna, чтобы получить желаемый результат:

df['a'] = df.b.fillna(df.c)
print (df)
          b         c         a
0      None  not None  not None
1  not None     other  not None

, где значение равно None в b, тогда значение c равносчитается

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