pandas 是否可以以矢量化方式访问存储在 Dataframe 中的列表?

9udxz4iz  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(121)

考虑如下 Dataframe :
第一个
我想创建一个新列'extracted_value',它将是包含在列表中'indexes'索引处的值(列表= [0,1,2],索引= 0 -〉0,索引= 1 -〉1,依此类推)

lists  indexes    extracted_values
0  [0, 1, 2]        0                   0
1  [3, 4, 5]        1                   4
2  [6, 7, 8]        2                   8

用iterrows()做这件事非常慢,因为我处理的 Dataframe 包含数百万行。
我已尝试以下方法:

df['extracted_value'] = df['lists'][df['indexes']]

但结果是:

lists  indexes extracted_value
0  [0, 1, 2]        0       [0, 1, 2]
1  [3, 4, 5]        1       [3, 4, 5]
2  [6, 7, 8]        2       [6, 7, 8]

下面的代码只会产生包含整个列表的extracted_value:

df['extracted_value'] = df['lists'][0]

谢谢你的帮助。

brvekthn

brvekthn1#

您所尝试的几乎没有问题,您只需要将其放入pd.DataFrame.apply中,同时将axis参数设置为1,以确保该函数应用于每一行:

df['extracted_values'] = df.apply(lambda x: x['lists'][x['indexes']], axis=1)
df

       lists  indexes  extracted_values
0  [0, 1, 2]        0                 0
1  [3, 4, 5]        1                 4
2  [6, 7, 8]        2                 8

相关问题