2015-12-15 1 views
2

Je veux rejoindre colonnes Pandas dataframe avec des conditions - séparent les colonnes par une virgule que si la fin on est pas vide:Pandas, combiner des colonnes de chaîne avec des conditions, mais obtenir la valeur de vérité d'une série est ambiguë

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. 

Cependant, toutes les suggestions des résultats de recherche que j'ai obtenu ne fonctionnent pas. Toutes mes tentatives ci-dessus ont fini avec l'erreur:

ValueError: The truth value of a Series is ambiguous. 

PS, étant donné que je me joins à plusieurs colonnes, et certains d'entre eux peut-être vide, et je ne veux pas finir avec une chaîne de plusieurs virgules , est-il possible d'écrire une fonction pour que j'appelle juste cette fonction en rejoignant plusieurs colonnes?

Aidez-nous s'il vous plaît. Merci

Répondre

3

Vous pouvez appliquer une fonction à chaque ligne comme ceci:

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