【问题标题】:Using dataframe value as an index for a list [duplicate]使用数据框值作为列表的索引[重复]
【发布时间】:2019-09-26 07:07:07
【问题描述】:

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

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:列表索引必须是整数或切片而不是系列。

【问题讨论】:

  • np.array(values)[df.list_index]

标签: python-3.x pandas dataframe


【解决方案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])

基本上你得到了上述错误,因为你没有逐个元素地传递列表元素的索引,而是作为一个不起作用的系列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多