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

时间:2017-06-08 16:10:04

标签: python pandas dataframe series

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

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]]

然后我将能够使用此整数获取列表中的值。我怎样才能得到我想要的这个价值?

2 个答案:

答案 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)