Mar*_*ijn 3 python merge dataframe pandas
我想使用类似的列'A'组合两个数据帧:
>>> df1
A B
0 I 1
1 I 2
2 II 3
>>> df2
A C
0 I 4
1 II 5
2 III 6
Run Code Online (Sandbox Code Playgroud)
为此,我尝试使用:
merged = pd.merge(df1,df2,on ='A',how ='outer')
返回的是:
>>> merged
A B C
0 I 1.0 4
1 I 2.0 4
2 II 3.0 5
3 III NaN 6
Run Code Online (Sandbox Code Playgroud)
但是,由于df2只包含A =='I'的一个值,因此我不希望在合并的数据帧中重复此值.相反,我想要以下输出:
>>> merged
A B C
0 I 1.0 4
1 I 2.0 NaN
2 II 3.0 5
3 III NaN 6
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?我是python的新手,并且仍然与所有join/merge/concatenate/append操作稍微混淆.
让我们创建一个新变量g,by cumcount
df1['g']=df1.groupby('A').cumcount()
df2['g']=df2.groupby('A').cumcount()
df1.merge(df2,how='outer').drop('g',1)
Out[62]:
A B C
0 I 1.0 4.0
1 I 2.0 NaN
2 II 3.0 5.0
3 III NaN 6.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2963 次 |
最近记录: |