gpt4 book ai didi

python - 如何合并两个pandas数据框?

转载 作者:行者123 更新时间:2023-12-01 03:39:27 25 4
gpt4 key购买 nike

我有两个 pandas 数据框(见下文)。我想根据 id (Dataframe1) 和 localid(Dataframe2) 合并它们。该代码不起作用;它在 dfmerged 中创建额外的行,因为 Dataframe2 可能包含多个相同的 localid(例如 D3)。如果第一个数据帧(DataFrame1)中不存在 localid,如何合并这两个数据帧并将“颜色”列的值设置为 NaN?

dfmerged = pd.merge(df1, df2, left_on='id', right_on='localid')

enter image description here

最佳答案

我认为你需要groupbydf2list 中的 sum 值,然后使用 mergedroplocalid:

df1 = pd.DataFrame({'id':['D1','D2','D3','D4','D5','D6'],
'Field1':[12,15,11,7,55,8.8]})

print (df1)
Field1 id
0 12.0 D1
1 15.0 D2
2 11.0 D3
3 7.0 D4
4 55.0 D5
5 8.8 D6

df2 = pd.DataFrame({'localid':['D1','D2','D3','D3','D9'],
'color':[['b'],['a'],['a','b'],['s','d'], ['a']]})

print (df2)
color localid
0 [b] D1
1 [a] D2
2 [a, b] D3
3 [s, d] D3
4 [a] D9
df2 = df2.groupby('localid', as_index=False)['color'].sum()
print (df2)
localid color
0 D1 [b]
1 D2 [a]
2 D3 [a, b, s, d]
3 D9 [a]


dfmerged = pd.merge(df1,
df2,
left_on='id',
right_on='localid',
how='left')
.drop('localid', axis=1)

print (dfmerged)
Field1 id color
0 12.0 D1 [b]
1 15.0 D2 [a]
2 11.0 D3 [a, b, s, d]
3 7.0 D4 NaN
4 55.0 D5 NaN
5 8.8 D6 NaN

关于python - 如何合并两个pandas数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com