我有一个数据框和一个设置如下的列表:
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。
答案 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元素的索引,而是将其作为无效的序列传递。