Как дополнить датафрейм пустыми значениями при добавлении списка в новый столбец - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь добавить новый столбец к существующему фрейму данных на основе списка, который короче уже существующих столбцов.

Значения списка основаны на словаре, где значение возвращается каждый раз, когда оно сопоставляется с ключом.

Я использую следующий метод для получения значений:

 attending_dict ={ 'Jack' :'Yes',
                   'John':'No',
                   'Paul':'Maybe'}        


List_Attended =[]
for i, row in df.iterrows():
    text = row['Invitations']
    make_list = text.split()

    for keys, values in attending_dict.items():
         if keys in make_list:
             List_Attended.append(values)

 List_Attended = [Yes,No,Maybe]

До сих пор я пытался использовать .loc для заполнения пропущенных значений, но выдает это сообщение об ошибке:

new_attending = pd.Series(List_Attended)
df.loc['Attending'] = new_attending.values

raise ValueError("cannot set a row with "
ValueError: cannot set a row with mismatched columns

Вот что я хотел бы иметь в моем фрейме данных:

 Invitations Attending
 Jack Muller Yes 
 John Doe    No 
 Ryan Paul   NaN
 Paul Doe    Maybe

Было бы замечательно, если бы кто-то мог объяснить, как решить эту проблему.

1 Ответ

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

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

attending_dict ={ 'Jack' :'Yes',
               'John':'No',
               'Paul':'Maybe'}  

Использование series.map()

df['Attending']=df.Invitations.str.split(" ").str[0].map(attending_dict)
print(df)

   Invitations Attending
0  Jack Muller       Yes
1     John Doe        No
2    Ryan Paul       NaN
3     Paul Doe     Maybe
...