首页 > 解决方案 > 在python中合并数据框

问题描述

我有以下2个数据框:

数据1:

    High    Low Open    Close   Volume  Adj Close
Date                        
2015-03-03  1773.900024 1747.550049 1764.000000 1758.300049 466325.0    1614.088623
2015-03-04  1774.650024 1715.000000 1765.000000 1725.150024 423168.0    1583.657471
2015-03-05  1729.000000 1675.000000 1725.599976 1698.650024 606834.0    1559.330933
2015-03-09  1689.800049 1647.300049 1686.000000 1660.099976 202470.0    1523.942627
2015-03-10  1677.000000 1633.000000 1661.000000 1650.150024 274799.0    1514.808838
... ... ... ... ... ... ...
2016-02-19  1280.900024 1248.400024 1259.800049 1278.000000 160509.0    1196.074463
2016-02-22  1287.300049 1267.650024 1274.500000 1281.500000 122556.0    1205.007446
2016-02-23  1282.000000 1240.650024 1271.099976 1243.900024 137883.0    1169.651611
2016-02-24  1245.250000 1225.800049 1239.000000 1233.150024 122545.0    1159.543335
2016-02-25  1234.800049 1196.000000 1231.400024 1199.849976 208252.0    1128.230957
244 rows × 6 columns

数据2:

High    Low Open    Close   Volume  Adj Close
Date                        
2016-09-14  1626.900024 1582.650024 1584.000000 1620.000000 282022  1533.289062
2016-09-15  1623.849976 1592.699951 1615.050049 1611.199951 226222  1524.960327
2016-09-16  1639.900024 1613.400024 1625.000000 1626.300049 250388  1539.252075
2016-09-19  1658.000000 1632.150024 1636.000000 1652.750000 256936  1564.286011
2016-09-20  1656.300049 1625.500000 1652.000000 1632.300049 276332  1544.930908
... ... ... ... ... ... ...
2016-12-19  1296.750000 1269.550049 1294.150024 1277.699951 320880  1209.310669
2016-12-20  1299.000000 1272.000000 1274.800049 1295.150024 128333  1225.827026
2016-12-21  1314.099976 1295.000000 1300.050049 1300.000000 189869  1230.417114
2016-12-22  1305.099976 1285.199951 1298.800049 1294.400024 195979  1225.116821
2016-12-23  1305.000000 1285.500000 1296.050049 1296.300049 167352  1226.915405
69 rows × 6 columns

注意日期不同。因此,要合并我使用过的这个数据框:final_data = pd.merge(data1,data2, on='Date', how ='outer')但生成的数据框如下所示:

    High_x  Low_x   Open_x  Close_x Volume_x    Adj Close_x High_y  Low_y   Open_y  Close_y Volume_y    Adj Close_y
Date                                                
2015-03-03  1773.900024 1747.550049 1764.000000 1758.300049 466325.0    1614.088623 NaN NaN NaN NaN NaN NaN
2015-03-04  1774.650024 1715.000000 1765.000000 1725.150024 423168.0    1583.657471 NaN NaN NaN NaN NaN NaN
2015-03-05  1729.000000 1675.000000 1725.599976 1698.650024 606834.0    1559.330933 NaN NaN NaN NaN NaN NaN
2015-03-09  1689.800049 1647.300049 1686.000000 1660.099976 202470.0    1523.942627 NaN NaN NaN NaN NaN NaN
2015-03-10  1677.000000 1633.000000 1661.000000 1650.150024 274799.0    1514.808838 NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ...
2016-12-19  NaN NaN NaN NaN NaN NaN 1296.750000 1269.550049 1294.150024 1277.699951 320880.0    1209.310669
2016-12-20  NaN NaN NaN NaN NaN NaN 1299.000000 1272.000000 1274.800049 1295.150024 128333.0    1225.827026
2016-12-21  NaN NaN NaN NaN NaN NaN 1314.099976 1295.000000 1300.050049 1300.000000 189869.0    1230.417114
2016-12-22  NaN NaN NaN NaN NaN NaN 1305.099976 1285.199951 1298.800049 1294.400024 195979.0    1225.116821
2016-12-23  NaN NaN NaN NaN NaN NaN 1305.000000 1285.500000 1296.050049 1296.300049 167352.0    1226.915405
313 rows × 12 columns

我如何合并这两个数据框以便列对齐。

标签: python-3.xpandasdataframe

解决方案


您可以使用pd.concat

print( pd.concat([df1, df2]) )

印刷:

                   High          Low         Open        Close    Volume     AdjClose
Date                                                                                 
2015-03-03  1773.900024  1747.550049  1764.000000  1758.300049  466325.0  1614.088623
2015-03-04  1774.650024  1715.000000  1765.000000  1725.150024  423168.0  1583.657471
2015-03-05  1729.000000  1675.000000  1725.599976  1698.650024  606834.0  1559.330933
2016-09-14  1626.900024  1582.650024  1584.000000  1620.000000  282022.0  1533.289062
2016-09-15  1623.849976  1592.699951  1615.050049  1611.199951  226222.0  1524.960327
2016-09-16  1639.900024  1613.400024  1625.000000  1626.300049  250388.0  1539.252075
2016-09-19  1658.000000  1632.150024  1636.000000  1652.750000  256936.0  1564.286011

...

推荐阅读