首页 > 解决方案 > 根据 Pandas 数据框中的相应值创建新列

问题描述

我有一个像这样的数据框:

id_a    id_b     col_a
  NaN    NaN     NaN
  0     133     [23]
  7     191     [10,7]
  10    303     [1]
  23    200     [0,7,10]

我需要像这样创建一个新列:

id_a    id_b     col_a      col_b
  NaN    NaN     NaN          NaN
  0     133     [23]         [200] 
  7     191     [10,7]       [303,191]
  10    303     [1]          [101]
  23    200     [0,7,10]     [133,191,303]

逻辑是我id_b根据id_a.

示例:对于第一个列表 [1,0,7];

我返回 101,从id_b因为 1 对应的值id_b是 101。然后 133 因为 0 匹配 133,最后是 191,因为 7 是这里的对应值。

我曾尝试使用.loc仅捕获那些行,但还没有走远。任何帮助是极大的赞赏

标签: pandasdataframe

解决方案


explode那时IIUCmap

df.col_a.explode().map(dict(zip(df.id_a,df.id_b))).groupby(level=0).agg(list)
0    [101, 133, 191]
1              [200]
2         [303, 191]
3              [101]
4    [133, 191, 303]
Name: col_a, dtype: object

推荐阅读