首页 > 解决方案 > 如何在python中的一个单元格中合并多个值

问题描述

我有两个数据框。我必须查看数据框 2 并在数据框 1 中输入相应的值或创建一个新的数据框。我怎样才能在python中做到这一点?

输入:

数据框 1

值:10、[20,30]、5

数据框 2

值:10、20、30、5
字母:a、b、a、c

输出应该是这样的

数据框 3

值:10、[20,30]、5
字母:a、[b、a]、c

输入 1 输入 2 输出

标签: pythonmerge

解决方案


因此,您有一个可以包含简单值或列表的 DataFrame 列,以及要用作翻译表的第二个 DataFrame。

我将假设中的列Valuedf2包含唯一值。

一种简单的方法是df1.Value在每个单元格中分解为一个值,然后重置索引以将原始索引存储在数据框列中,以便以后能够对其进行聚合。然后你只需合并df2并聚合保存的原始索引:

df1.reset_index().explode('Value').merge(df2, how='left', on='Value'
                         ).groupby('index').agg(
    lambda x: x.iat[0] if len(x) == 1 else x.to_list())

它按预期给出:

          Value  Letter
index                  
0            10       a
1      [20, 30]  [b, a]
2             5       c

推荐阅读