2015-12-15 1 views
2

Я хочу присоединиться столбцами Панд DataFrame с условиями - отдельные столбцы с запятой, только если окончание один не пусто:Панды, Объединить строки столбцов с условиями, но получить значение истины в серии неоднозначно

import numpy as np 
import pandas as pd 

df = pd.DataFrame({'score':np.random.randn(3), 
        'person1':[x*3 for x in list('ABC')], 
        'person2':[x*3 for x in list('DEF')]}) 
df 

df['person2'][1]="" 
#print(df['person1']+("" if df['person2']=="" else ", "+df['person2'])) 
#print(df['person1']+("" if not df['person2'] else ", "+df['person2'])) 
#print(df['person1']+("" if not df['person2'].values else ", "+df['person2'])) 
# ValueError: The truth value of a Series is ambiguous. 

Однако все предложения из поисковых запросов, которые я получил, не работают. Все мои попытки выше закончилась с ошибкой:

ValueError: The truth value of a Series is ambiguous. 

PS, учитывая, что я присоединяюсь несколько столбцов, и некоторые из них, может быть пустым, и я не хочу, чтобы в конечном итоге со строкой многократным запятыми , можно ли написать функцию, чтобы я просто вызывал эту функцию при объединении нескольких столбцов?

Пожалуйста, помогите. Благодаря

ответ

3

Вы можете применить функцию к каждой строке, как это:

df.apply(lambda row: row.person1 + (',' + row.person2 if row.person2 else ''), 
     axis=1) 

 Смежные вопросы

  • Нет связанных вопросов^_^