【问题标题】:Python - A dictionary of dataframes: merge all the dataframes to one big dataframePython - 数据框字典:将所有数据框合并到一个大数据框
【发布时间】:2021-12-15 16:28:40
【问题描述】:

我有一个数据框字典。它由大约 50 个 dfs 组成,但为了演示的简单性,假设我只有 2 个。

这是字典: 这是一个特定位置的很多天气参数,持续了几天。

dict_df = { "Location_1" : [ temp_max  temp_min  precip_mm  \
date                                                         
2012-05-16      31.370001      15.050000            0.0000   
2012-05-17      30.559999      16.780001            0.0000   
2012-05-18      32.529999      17.040001            0.0000   
2012-05-19      32.860001      19.190001            0.0000   
2012-05-20      33.340000      18.580000            0.0000   
2012-05-21      27.430000      17.450001           18.5245   
2012-05-22      26.730000      13.800000            0.0000   
2012-05-23      29.340000      13.300000            0.0000   
2012-05-24      32.779999      19.500000            0.0000   
2012-05-25      32.919998      22.830000            0.0000   

            solar_energy_w_h_per_m2  rel_humidity_max_%  rel_humidity_min_%  
date                                                                          
2012-05-16              7677.530273           83.779999           24.580000   
2012-05-17              7488.292969           78.629997           25.270000   
2012-05-18              6644.316895           83.879997           26.900000   
2012-05-19              7523.830078           83.709999           33.230000   
2012-05-20              6840.391113           90.139999           33.930000   
2012-05-21              5472.107910           93.139999           43.490002   
2012-05-22              8293.391602           87.540001           28.680000   
2012-05-23              8351.654297           91.379997           25.240000   
2012-05-24              8176.128418           69.089996           35.290001   
2012-05-25              6369.352539           76.449997           40.139999 ],
"Location_2" : [temp_max_cels  temp_min_cels  precip_amount_mm  \
date                                                         
2012-05-16      31.370001      15.050000            0.0000   
2012-05-17      30.559999      16.780001            0.0000   
2012-05-18      32.529999      17.040001            0.0000   
2012-05-19      32.860001      19.190001            0.0000   
2012-05-20      33.340000      18.580000            0.0000   
2012-05-21      27.430000      17.450001           18.5245   
2012-05-22      26.730000      13.800000            0.0000   
2012-05-23      29.340000      13.300000            0.0000   
2012-05-24      32.779999      19.500000            0.0000   
2012-05-25      32.919998      22.830000            0.0000   

            solar_energy_w_h_per_m2  rel_humidity_max_%  rel_humidity_min_%  \
date                                                                          
2012-05-16              7677.530273           83.779999           24.580000   
2012-05-17              7488.292969           78.629997           25.270000   
2012-05-18              6644.316895           83.879997           26.900000   
2012-05-19              7523.830078           83.709999           33.230000   
2012-05-20              6840.391113           90.139999           33.930000   
2012-05-21              5472.107910           93.139999           43.490002   
2012-05-22              8293.391602           87.540001           28.680000   
2012-05-23              8351.654297           91.379997           25.240000   
2012-05-24              8176.128418           69.089996           35.290001   
2012-05-25              6369.352539           76.449997           40.139999]}   

大约 50 个地点都是这样。

我希望能够将字典中可能没有确切日期但具有相同类型和列数的所有数据帧合并到这样的数据帧:

我希望它很清楚。非常感谢您提供的任何帮助。

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    你可以这样做

    df = pd.concat(dict_df).reset_index(level=1,drop=True)
    

    【讨论】:

    • 谢谢,但我收到了TypeError: cannot concatenate object of type '<class 'list'>'; only Series and DataFrame objs are valid'。我已经设法通过使用列表理解而不是 pd.concat() 来连接单个数据帧,如下所示:dict_df1 = [list(dict_df.values())[0][i] for i in range(1,11)] 然后final_df_1 = pd.concat(dict_df1) 范围是 1 到 11,因为我有 10 列。我想为所有的df做这件事。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 2021-08-03
    • 1970-01-01
    • 2018-05-13
    • 2017-10-21
    • 2019-06-26
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多