繁体   English   中英

熊猫将列表元素加入其他数据框列

[英]pandas join list elements to other dataframe column

我有以下熊猫数据框,我想加入列表列,查找并获取值。

df1 
x_id  y_id
1     [101,102,103]
2     [102, 103]
3     [103]

df2
y_id   y_name
101     abc
102     xyz
103     def

我想要一个数据框 df3 为:

df3
x_id  y_id             y_names
1     [101,102,103]    [abc, xyz, def]   
2     [102, 103]       [xyz, def]
3     [103]            [def]

尝试使用查找和应用功能,但无法实现。

使用列表推导和映射系列的第一个选项:

s = df2.set_index('y_id')['y_name']

df1['y_names'] = [[s[x] for x in l] for l in df1['y_id']]

使用explodemapgroupby.agg的第二个选项:

(df1
 .explode('y_id')
 .assign(y_names=lambda d: d['y_id'].map(df2.set_index('y_id')['y_name']))
 .groupby('x_id', as_index=False).agg(list)
)

输出:

   x_id             y_id          y_names
0     1  [101, 102, 103]  [abc, xyz, def]
1     2       [102, 103]       [xyz, def]
2     3            [103]            [def]

使用的输入:

df = pd.DataFrame({'x_id': [1, 2, 3],
                   'y_id': [[101, 102, 103], [102, 103], [103]]})

将 df2 转换为字典进行查找,然后使用数据框 apply 从字典中获取查找值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM