通过 pd.concat() returns NA 组合两个数据帧
Combining two dataframes by pd.concat() returns NA
我有两个具有相同时间索引的数据帧,我想合并它们。
这是 df 1:
SIM Sim
2016 7.044070
2017 -5.969345
2018 -9.398478
2019 10.780780
2020 4.670440
2021 0.755153
2022 2.774908
2023 -1.593711
2024 3.680238
2025 2.649697
2026 -2.129628
2027 -7.995690
2028 -11.580384
2029 3.329955
2030 -7.350348
2031 -18.700540
2032 -7.567082
2033 6.708158
2034 -16.560767
2035 -10.297144
2036 6.358823
2037 -3.799261
2038 -17.014105
2039 -2.428987
2040 4.503636
df2 看起来如下:
8
2016 9.011255
2017 -8.570188
2018 16.400602
2019 7.656812
2020 4.410551
2021 -0.088575
2022 17.015454
2023 9.829078
2024 5.102307
2025 21.613413
2026 -16.868674
2027 24.853295
2028 10.936787
2029 3.733469
2030 7.476336
2031 14.418942
2032 -11.040764
2033 36.520934
2034 -5.891520
2035 16.501258
2036 18.216938
2037 -0.361039
2038 6.417441
2039 17.289889
2040 8.844421
下面的代码Returns NA值
pd.concat([df1, df2], axis = 1)
SIM Sim 8
2016 NaN 9.011255
2017 NaN -8.570188
2018 NaN 16.400602
2019 NaN 7.656812
2020 NaN 4.410551
2021 NaN -0.088575
2022 NaN 17.015454
2023 NaN 9.829078
2024 NaN 5.102307
2025 NaN 21.613413
2026 NaN -16.868674
2027 NaN 24.853295
2028 NaN 10.936787
2029 NaN 3.733469
2030 NaN 7.476336
2031 NaN 14.418942
2032 NaN -11.040764
2033 NaN 36.520934
2034 NaN -5.891520
2035 NaN 16.501258
2036 NaN 18.216938
2037 NaN -0.361039
2038 NaN 6.417441
2039 NaN 17.289889
2040 NaN 8.844421
type(df1) 和 type(df2) 都是 Pandas 数据帧。
有谁知道如何连接两个数据框?
我认为你需要set_index
,因为似乎DataFrames
中有不同的索引值,所以concat
无法通过indexes
对齐数据并得到NAN
:
pd.concat([df1.set_index('SIM'), df2], axis = 1)
通过评论编辑:
两个 DataFrames
都需要 Int64Index
,所以尝试:
df1.index = df1.index.astype(int)
我有两个具有相同时间索引的数据帧,我想合并它们。 这是 df 1:
SIM Sim
2016 7.044070
2017 -5.969345
2018 -9.398478
2019 10.780780
2020 4.670440
2021 0.755153
2022 2.774908
2023 -1.593711
2024 3.680238
2025 2.649697
2026 -2.129628
2027 -7.995690
2028 -11.580384
2029 3.329955
2030 -7.350348
2031 -18.700540
2032 -7.567082
2033 6.708158
2034 -16.560767
2035 -10.297144
2036 6.358823
2037 -3.799261
2038 -17.014105
2039 -2.428987
2040 4.503636
df2 看起来如下:
8
2016 9.011255
2017 -8.570188
2018 16.400602
2019 7.656812
2020 4.410551
2021 -0.088575
2022 17.015454
2023 9.829078
2024 5.102307
2025 21.613413
2026 -16.868674
2027 24.853295
2028 10.936787
2029 3.733469
2030 7.476336
2031 14.418942
2032 -11.040764
2033 36.520934
2034 -5.891520
2035 16.501258
2036 18.216938
2037 -0.361039
2038 6.417441
2039 17.289889
2040 8.844421
下面的代码Returns NA值
pd.concat([df1, df2], axis = 1)
SIM Sim 8
2016 NaN 9.011255
2017 NaN -8.570188
2018 NaN 16.400602
2019 NaN 7.656812
2020 NaN 4.410551
2021 NaN -0.088575
2022 NaN 17.015454
2023 NaN 9.829078
2024 NaN 5.102307
2025 NaN 21.613413
2026 NaN -16.868674
2027 NaN 24.853295
2028 NaN 10.936787
2029 NaN 3.733469
2030 NaN 7.476336
2031 NaN 14.418942
2032 NaN -11.040764
2033 NaN 36.520934
2034 NaN -5.891520
2035 NaN 16.501258
2036 NaN 18.216938
2037 NaN -0.361039
2038 NaN 6.417441
2039 NaN 17.289889
2040 NaN 8.844421
type(df1) 和 type(df2) 都是 Pandas 数据帧。 有谁知道如何连接两个数据框?
我认为你需要set_index
,因为似乎DataFrames
中有不同的索引值,所以concat
无法通过indexes
对齐数据并得到NAN
:
pd.concat([df1.set_index('SIM'), df2], axis = 1)
通过评论编辑:
两个 DataFrames
都需要 Int64Index
,所以尝试:
df1.index = df1.index.astype(int)