Python/Pandas外部合并不包括所有相关列



我想在Pandas中合并以下两个数据帧,但结果不包含所有相关列:

L1aIn[0:5]文件名OrbitNumber OrbitMode

OrbitModeCounter  Year  Month  Day  L1aIn
0  oco2_L1aInDP_35863a_210329_B10206_210330111927.h5        35863        DP                a  2021      3   29      1
1  oco2_L1aInDP_35862a_210329_B10206_210330111935.h5        35862        DP                a  2021      3   29      1
2  oco2_L1aInDP_35861b_210329_B10206_210330111934.h5        35861        DP                b  2021      3   29      1
3  oco2_L1aInLP_35861a_210329_B10206_210330111934.h5        35861        LP                a  2021      3   29      1
4  oco2_L1aInSP_35861a_210329_B10206_210330111934.h5        35861        SP                a  2021      3   29      1
L2Std[0:5]  
Filename  OrbitNumber OrbitMode OrbitModeCounter  Year  Month  Day  L2Std
0  oco2_L2StdGL_35861a_210329_B10206r_21042704283...        35861        GL                a  2021      3   29      1
1  oco2_L2StdXS_35860a_210329_B10206r_21042700342...        35860        XS                a  2021      3   29      1
2  oco2_L2StdND_35852a_210329_B10206r_21042622540...        35852        ND                a  2021      3   29      1
3  oco2_L2StdGL_35862a_210329_B10206r_21042622403...        35862        GL                a  2021      3   29      1
4  oco2_L2StdTG_35856a_210329_B10206r_21042622422...        35856        TG                a  2021      3   29      1
>>> df = L1aIn.copy(deep=True)
>>> df.merge(L2Std, how="outer", on=["OrbitNumber","OrbitMode","OrbitModeCounter"])
0  oco2_L1aInDP_35863a_210329_B10206_210330111927.h5        35863        DP                a  ...     NaN      NaN    NaN    NaN
1  oco2_L1aInDP_35862a_210329_B10206_210330111935.h5        35862        DP                a  ...     NaN      NaN    NaN    NaN
2  oco2_L1aInDP_35861b_210329_B10206_210330111934.h5        35861        DP                b  ...     NaN      NaN    NaN    NaN
3  oco2_L1aInLP_35861a_210329_B10206_210330111934.h5        35861        LP                a  ...     NaN      NaN    NaN    NaN
4  oco2_L1aInSP_35861a_210329_B10206_210330111934.h5        35861        SP                a  ...     NaN      NaN    NaN    NaN
5                                                NaN        35861        GL                a  ...  2021.0      3.0   29.0    1.0
6                                                NaN        35860        XS                a  ...  2021.0      3.0   29.0    1.0
7                                                NaN        35852        ND                a  ...  2021.0      3.0   29.0    1.0
8                                                NaN        35862        GL                a  ...  2021.0      3.0   29.0    1.0
9                                                NaN        35856        TG                a  ...  2021.0      3.0   29.0    1.0
[10 rows x 13 columns]
>>> df.columns
Index(['Filename', 'OrbitNumber', 'OrbitMode', 'OrbitModeCounter', 'Year',
'Month', 'Day', 'L1aIn'],
dtype='object')

我希望得到的合并表包括";L1aIn";以及";L2Std";列,但正如您所看到的,它没有,只从L1aIn中提取原始列。

我也很困惑为什么它似乎返回了一个数据帧对象而不是None。

玩具的例子对我来说很好,但现实生活中的例子却不行。是什么情况引发了合并的这种行为?

在我看来,你只需要一个变量到的输出

merged_df = df.merge(L2Std, how="outer", on=["OrbitNumber","OrbitMode","OrbitModeCounter"])
print(merged_df.columns)

最新更新