考虑如下 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]
谢谢你的帮助。
1条答案
按热度按时间brvekthn1#
您所尝试的几乎没有问题,您只需要将其放入
pd.DataFrame.apply
中,同时将axis
参数设置为1,以确保该函数应用于每一行: