Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用dataframe值作为列表的索引_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 使用dataframe值作为列表的索引

Python 3.x 使用dataframe值作为列表的索引,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个数据框和一个列表,设置如下: index list_index sample1 1 sample2 2 sample3 4 values = [-0.5, -23, 0, 15, 100] 我试图在dataframe中创建一个新列,该列采用列表索引和值列表。例如: index list_index val sample1 1 -23 sample2 2 0 sample3 5 100 我的代码

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

index   list_index
sample1  1
sample2  2
sample3  4

values = [-0.5, -23, 0, 15, 100]
我试图在dataframe中创建一个新列,该列采用列表索引和值列表。例如:

index   list_index    val
sample1  1           -23
sample2  2            0
sample3  5            100
我的代码是:

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

我得到TypeError:列表索引必须是整数或片而不是序列。

我将使用
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'].应用(lambda x:values[x])

基本上,您得到的是上述错误,因为您不是逐个元素传递列表元素的索引,而是作为一个不起作用的序列。

np.array(values)[df.list\u index]