我有一个熊猫数据框:
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上进行的。
我的想法是首先在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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句