【发布时间】:2019-07-04 19:52:21
【问题描述】:
我正在尝试根据比现有列短的列表向现有数据框添加新列。
列表的值基于字典,每次与键匹配时都会返回一个值。
我正在使用以下方法来检索值:
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
如果有人能解释如何解决这个问题,那就太好了。
【问题讨论】:
-
你从哪里提取数据,请同时发布来源。(猜你有一个字典)谢谢
-
尝试
pd.concat([df,new_attending], ignore_index=True, axis=1)添加一个具有不同行数的新列。 -
@anky_91 这只是我自己的一种做法,所以数据只是标记为“邀请”的列中的随机名称,我添加了字典,它只是随意将人们标记为是、否或可能基于名字。
-
@Sumanth 感谢您提供解决方案并且它确实有效,但是它用 NaN 填充最后几列,我想在它们出现在名称旁边的位置填充 NaN(因此基于我猜的索引)-抱歉没有让这一点更清楚!
标签: python-3.x pandas list dataframe nan