大熊猫合并中的汇总映射值

我有一个熊猫数据框:

import pandas as pd
df = pd.DataFrame({"a": [["x","y"]],"b": [2]})
df2= pd.DataFrame({"a": ["x","y"],"b":[2,2],"c": [3,4]})

其中df.a具有列表条目:

    a           b   
0   ["x","y"]   2

df2将这些列表元素(以及其他列的条目)映射到列c:

    a       b   c
0   "x"     2   3
1   "y"     2   4

我想退出加入df,df2,以便最终得到:

    a           b   c
0   ["x","y"]   2   7

其中,聚合(在这种情况下为和)是从键a,b映射的值c上进行的。

mfj111071 回答:大熊猫合并中的汇总映射值

我的想法是首先在df1中创建一个唯一键,这样它可以保留a列中列表的分组,从而允许您在> 0.25的熊猫中使用df.explode。我还添加了另一行以测试其工作方式:

df1['key'] = (df1.a != df1.a.shift()).cumsum()
df1 = df1.explode('a')
df = df1.merge(df2)
df = df.groupby('key').agg({'a': list,'b': 'first','c': sum}).reset_index(drop=True)

print(df)
        a  b   c
0  [x,y]  2   7
1     [z]  3  10
本文链接:https://www.f2er.com/3046780.html

大家都在问