基于Pandas中的列值获取Dataframe中列表的元素

p1tboqfb  于 2022-10-23  发布在  其他
关注(0)|答案(2)|浏览(160)

我想根据Pandas Dataframe中的另一列单元格值选择列表列中的一个特定元素。

list_column    value
0   [a, b, c]      0
1   [a, b, c]      2
2   [a, b, c]      1

因此期望的输出将是:

list_column     value   selected
0   [a, b, c]       0       a
1   [a, b, c]       2       c
2   [a, b, c]       1       b

我尝试使用df["selected"] = df['list'].str[df["value"]],但未能正确应用。

7gcisfzg

7gcisfzg1#

我已经检查过以前的解决方案不起作用我已经测试过这个解决方案

mask = df[df['list_column'].map(len) > 0]  
for index in mask.index:  
    value = df.loc[index,'values']  
    df.loc[index,"selected"] = df.loc[index,'list_column'][value]
lx0bsm1f

lx0bsm1f2#

对于矢量方法,使用numpy切片:

import numpy as np

df['selected'] = np.vstack(df['list_column'])[np.arange(len(df)), df['value']]

输出:

list_column  value selected
0   [a, b, c]      0        a
1   [a, b, c]      2        c
2   [a, b, c]      1        b

相关问题