Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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创建3个类似值时,才合并两个表_Python_Pandas_Dataframe - Fatal编程技术网

仅当使用python创建3个类似值时,才合并两个表

仅当使用python创建3个类似值时,才合并两个表,python,pandas,dataframe,Python,Pandas,Dataframe,仅当3列的值相同时,我才需要组合两个不同的数据集,例如: df1 df2 因此,要组合这些表,这些值需要满足以下条件: df1['iso3_o'] == df2['origins'] AND df1['iso3_d'] == df2['target'] AND df1['year'] == df2['year'] 因此,我需要得到一个如下所示的联合表格: iso3_o iso3_d year value1 value2 value_3 value_4 pak

仅当3列的值相同时,我才需要组合两个不同的数据集,例如:

df1

df2

因此,要组合这些表,这些值需要满足以下条件:

df1['iso3_o'] == df2['origins'] AND df1['iso3_d'] == df2['target'] AND df1['year'] == df2['year']
因此,我需要得到一个如下所示的联合表格:

iso3_o    iso3_d    year   value1   value2   value_3   value_4
   pak       tza     2000      123     456       763       987
   lby       vnm     2000      435     148       NaN       NaN
   lby       vnm     2001      NaN     NaN       349       274
   can       jpn     2001      983     095       NaN       NaN    
   can       jpn     2002      NaN     NaN       238       095    
   civ       pa      2001      109     265       NaN       NaN
   bol       slv     2004      019     239       047       384
   chl       geo     2000      NaN     NaN       109       236

IIUC我们可以在一个DF中重命名列,以便在两个DF中“连接”列时具有相同的列名。默认情况下,将在列的交点处合并

In [114]: df1.merge(df2.rename(columns={'origin':'iso3_o', 'target':'iso3_d'}), how='outer')
Out[114]:
  iso3_o iso3_d  year  value1  value2  value_3  value_4
0    pak    tza  2000   123.0   456.0    763.0    987.0
1    lby    vnm  2000   435.0   148.0      NaN      NaN
2    can    jpn  2001   983.0    95.0      NaN      NaN
3    civ     pa  2001   109.0   265.0      NaN      NaN
4    bol    slv  2004    19.0   239.0     47.0    384.0
5    lby    vnm  2001     NaN     NaN    349.0    274.0
6    can    jpn  2002     NaN     NaN    238.0     95.0
7    chl    geo  2000     NaN     NaN    109.0    236.0

IIUC我们可以在一个DF中重命名列,以便在两个DF中“连接”列时具有相同的列名。默认情况下,将在列的交点处合并

In [114]: df1.merge(df2.rename(columns={'origin':'iso3_o', 'target':'iso3_d'}), how='outer')
Out[114]:
  iso3_o iso3_d  year  value1  value2  value_3  value_4
0    pak    tza  2000   123.0   456.0    763.0    987.0
1    lby    vnm  2000   435.0   148.0      NaN      NaN
2    can    jpn  2001   983.0    95.0      NaN      NaN
3    civ     pa  2001   109.0   265.0      NaN      NaN
4    bol    slv  2004    19.0   239.0     47.0    384.0
5    lby    vnm  2001     NaN     NaN    349.0    274.0
6    can    jpn  2002     NaN     NaN    238.0     95.0
7    chl    geo  2000     NaN     NaN    109.0    236.0

脚本正在复制行=(。脚本正在复制行=(。
In [114]: df1.merge(df2.rename(columns={'origin':'iso3_o', 'target':'iso3_d'}), how='outer')
Out[114]:
  iso3_o iso3_d  year  value1  value2  value_3  value_4
0    pak    tza  2000   123.0   456.0    763.0    987.0
1    lby    vnm  2000   435.0   148.0      NaN      NaN
2    can    jpn  2001   983.0    95.0      NaN      NaN
3    civ     pa  2001   109.0   265.0      NaN      NaN
4    bol    slv  2004    19.0   239.0     47.0    384.0
5    lby    vnm  2001     NaN     NaN    349.0    274.0
6    can    jpn  2002     NaN     NaN    238.0     95.0
7    chl    geo  2000     NaN     NaN    109.0    236.0