我有一个数据框,列中有一个列表,另一列有该行的特定整数值。我想使用此整数值从另一列内的列表中提取特定值:
DF:
list val
1 ['mohamed', 'adam', 'paul', 'dave'] 3
2 ['dave', 'fred'] 0
3 ['john', 'dave', 'jane'] 1
4 ['dave'] 0
这是由:
创建的df = df.loc[df['unsplit_list'].str.contains('dave')]
df['list'] = df['unsplit_list'].str.split('|')
df['val'] = df['list'].apply(lambda lst: [i for i, x in enumerate(lst) if 'dave' in x][0])
df['val'] = df['val'].astype(int)
当我尝试从列表中获取dave的值时,会出现错误:
df['list'].str[df['val']]
>>
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
但是,如果我这样做了:
df['list'].str[df[1]]
然后我将能够使用此整数获取列表中的值。我怎样才能得到我想要的这个价值?
答案 0 :(得分:1)
df['name'] = [row[0][row[1]] for ix, row in df.iterrows()]
答案 1 :(得分:0)
你可以这样做:
df.apply(lambda x: x['list'][x['value']], axis=1)