首页 > 解决方案 > 如何从包含数字列表的熊猫单元格中检索特定元素

问题描述

假设我有一个这样的数据框:

df
       cars                       places
0   [10, 20, 30, 40]            [0, 0, 0, 3]
1   [10, 20, 30, 40, 50, 60]    [0, 0, 1, 2, 3, 5]
2   [10, 20]                    [0, 1]

我想创建第三列,其中仅包含与 column"cars"中的数字相对应的0column元素places。因此,期望的输出是

          cars                    places            stolen
0   [10, 20, 30, 40]             [0, 0, 0, 3]       [10, 20, 30]
1   [10, 20, 30, 40, 50, 60]     [0, 0, 1, 2, 3, 5] [10, 20]
2   [10, 20]                     [0, 1]             [10]

执行此操作的最流畅的方法是什么?

标签: pythonpandas

解决方案


您可以使用应用功能

df['stolen'] = df.apply(lambda x: [x['cars'][i] for i, j in enumerate(x['places']) if j==0], axis=1)

输出

                       cars              places        stolen
0          [10, 20, 30, 40]        [0, 0, 0, 3]  [10, 20, 30]
1  [10, 20, 30, 40, 50, 60]  [0, 0, 1, 2, 3, 5]      [10, 20]
2                  [10, 20]              [0, 1]          [10]

推荐阅读