Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并两个大小不同的数据帧_Python_Pandas_Dataframe - Fatal编程技术网

Python 合并两个大小不同的数据帧

Python 合并两个大小不同的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个不同大小的数据帧,我想合并它们 这就像根据另一个大小不同的数据帧对数据帧列进行“更新” 这是一个示例输入: 数据帧1 CODUSU Situação TIPO1 0 1AB P A0 1 2C3 C B1 2 3AB P C1 数据帧2 CODUSU Situação ABC 0 1AB A 3 1 3AB A 4 我的输出应该是这样的: 数据帧

我有两个不同大小的数据帧,我想合并它们

这就像根据另一个大小不同的数据帧对数据帧列进行“更新”

这是一个示例输入:

数据帧1

  CODUSU Situação TIPO1
0    1AB        P    A0
1    2C3        C    B1
2    3AB        P    C1
数据帧2

  CODUSU Situação  ABC
0    1AB        A    3
1    3AB        A    4
我的输出应该是这样的:

数据帧3

  CODUSU Situação TIPO1
0    1AB        A    A0
1    2C3        C    B1
2    3AB        A    C1
PS:我是通过循环完成的,但我认为应该有更好更简单的方法来实现

我阅读了以下内容:并编写了以下代码:

df3=df1.merge(df2, on=['CODUSU'], how='left', indicator=False)
df3['Situação'] = np.where((df3['Situação_x'] == 'P') & (df3['Situação_y'] == 'A') , df3['Situação_y'] , df3['Situação_x'])
df3=df3.drop(columns=['Situação_x', 'Situação_y','ABC'])
df3 = df3[['CODUSU','Situação','TIPO1']]
瞧,df3正是我所需要的! 谢谢大家

我已经找到了答案,有没有更好的地方来回答我自己的问题

df1.merge(df2,how='left', left_on='CODUSU', right_on='CODUSU')
这应该能奏效

另外,值得注意的是,如果希望生成的数据帧不包含列ABC,那么可以使用df2.drop(“ABC”)而不仅仅是df2

这应该能奏效


另外,值得注意的是,如果希望生成的数据帧不包含列ABC,那么可以使用df2.drop(“ABC”)而不仅仅是df2。

该命令返回此命令:>CODUSU Situaçoçu x TIPO1 Situaçoçu y ABC>0 1AB p A0 A 3.0>1 2C3 C B1 NaN NaN>2 3AB p C1 A 4.0`该命令返回此命令:>CODUSU Situaçoçu x TIPO1 Situaçoçu y ABC>0 1AB P A0 A 3.0>1 2C3 C B1 NaN NaN>2 3A B P C1 A 4.0`