Python 使用dataframe列中的整数从另一列中的列表中提取特定值

Python 使用dataframe列中的整数从另一列中的列表中提取特定值,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我有一个数据框,其中一列中有一个列表,另一列中该行有一个特定的整数值。我想使用此整数值从另一列中的列表中提取特定值: df: 这是由以下人员创建的: 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 '

我有一个数据框,其中一列中有一个列表,另一列中该行有一个特定的整数值。我想使用此整数值从另一列中的列表中提取特定值:

df:

这是由以下人员创建的:

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]]
然后,我将能够使用这个整数获得列表中的值。如何获取我想要的值?

您可以执行以下操作:

df.apply(lambda x: x['list'][x['value']], axis=1)
df.apply(lambda x: x['list'][x['value']], axis=1)
df['name'] = [row[0][row[1]] for ix, row in df.iterrows()]