ValueError: Значение истинности массива с более чем одним элементом неоднозначно. Панды серии - PullRequest
0 голосов
/ 06 марта 2019

Я знаю, что эта проблема решалась много раз, но ответы, которые я нашел, не работают для меня.Таким образом, мои столбцы Dataframe, с которыми я оперирую, выглядят так: http://prntscr.com/mu3i86 и я хочу создать новый столбец следующим образом:

df2['Vpip'] = ['No' if (df2['Call_Pre'] == '[]') & (df2['Raise_Pre'] == '[]') else 'Yes' for index, row in df2.iterrows()] 

Я думаю, что мои скобки в порядке, я также использую операторы &|вместо и, или заявление, но это все еще вызывает у меня ошибку.Можете ли вы помочь мне исправить это?

Ответы [ 3 ]

2 голосов
/ 06 марта 2019

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

df2['Vpip'] = ((df2['Call_Pre'] == '[]') & (df2['Raise_Pre'] == '[]')).map({True:'Yes',False:'No'})
2 голосов
/ 06 марта 2019

Использование np.where()

df2['Vpip'] = np.where((df2['Call_Pre'] == '[]') & (df2['Raise_Pre'] == '[]'),'No','Yes')

Для elif заявлений посмотрите на np.select()

1 голос
/ 06 марта 2019

Я предлагаю вам использовать функциональность apply:

def f(row):
    if row['Call_Pre']=='[]' and row['Raise_Pre']=='[]':
        val = 'No'
    else:
        val = 'Yes'
    return val

df2['Vpip'] = df2.apply(f, axis=1)
...