合并两个DataFrame时不忽略任何适用的数据

时间:2019-05-13 07:18:49

标签: python pandas

所以我想合并两个数据框,以便将占位符的列添加到df1的匹配行中。这是两个数据框。

占位符如下:

   symbol open     high  ...        previous close     change     change percent
0   MDCO  31.7900  32.7000  ...            31.8600     0.5800            1.8205%

df1看起来像:

   symbol  ...                  phase
0    MDCO  ...                Phase 2
1    FTSV  ...              Phase 1/2
2    FTSV  ...                Phase 1
3    FTSV  ...                Phase 1
4     NVO  ...                Phase 2
5     PFE  ...  PDUFA priority review

这就是我对两个数据库所做的一切。以任何方式影响结果的情况。

 placeholder = pd.DataFrame(List_Filled)_With_Dictionaries)
placeholder.rename(columns={"01. symbol": "symbol"},inplace=True)


placeholder['symbol'] = placeholder['symbol'].astype(str)
print(placeholder)

Result = pd.concat([Df1,placeholder],axis=1)
Result.set_index('symbol',inplace=True)

这是我当前代码的结果:

              Unnamed: 0  ... 10. change percent
symbol                    ...                   
(MDCO, MDCO)           0  ...            1.8205%
(FTSV, nan)            1  ...                NaN
(FTSV, nan)            2  ...                NaN
(FTSV, nan)            3  ...                NaN
(NVO, nan)             4  ...                NaN

我希望它看起来像这样

     symbol  ...              phase    ...     Change Percent
0    MDCO  ...                Phase 2  ...     5%
1    FTSV  ...                Phase 1/2...     2% 
2    FTSV  ...                Phase 1  ...     1%
3    FTSV  ...                Phase 1  ...     4%
4     NVO  ...                Phase 2  ...     2%
5     PFE  ...  PDUFA priority review  ...     1%

有人告诉我我的描述没有任何意义。因此,如果您有任何疑问,请提出,因为我不知道该如何进一步澄清。我希望没有几个(nan),因为我需要多次运行此代码以及unnamed列。

编辑:问题已解决。这是最终解决方案的外观

                                                     drug  ... 10. change percent
symbol                                                     ...                   
MDCO                                 Inclisiran - ORION 3  ...            1.8205%
FTSV                                      5F9 + rituximab  ...                NaN
FTSV                                    5F9 + Azacitidine  ...                NaN
FTSV                                                  5F9  ...                NaN

1 个答案:

答案 0 :(得分:0)

假设匹配行表示具有相同符号值的行,您想要的不是concat而是mergejoin 。这应该可以工作:

Result = Df1.merge(placeholder, on='symbol', out='left')