使用数据框值作为列表的索引

时间:2019-05-08 14:00:57

标签: python-3.x pandas dataframe

我有一个数据框和一个设置如下的列表:

index   list_index
sample1  1
sample2  2
sample3  4

values = [-0.5, -23, 0, 15, 100]

我正在尝试在采用list_index和values列表的数据框中创建一个新列。如下所示:

index   list_index    val
sample1  1           -23
sample2  2            0
sample3  5            100

我的代码是:

df['val'] = values[df['list_index']]

我收到TypeError:列表索引必须是整数或切片,而不是Series。

1 个答案:

答案 0 :(得分:1)

我会使用pandas.series.apply

示例代码:

import pandas as pd

df = pd.DataFrame({'A' : [1,3,5]})

v = [0, 1, 0, 1, 0, 1]

df['B'] = df['A'].apply(lambda x: v[x])

得出您想要的结果:

Out[7]:
   A  B
0  1  1
1  3  1
2  5  1

对于您的代码,请执行以下操作

df['val'] = df['list_index'].apply(lambda x: values[x])

本质上,您得到的是上述错误,因为您没有逐个传递list元素的索引,而是将其作为无效的序列传递。