根据 Pandas 中的多个约束匹配数据框列

Matching data frame columns based on multiple constraints in Pandas

我正在处理一个包含财务数据的项目。在这种情况下,我有两个数据框,一个包含基本价值,另一个包含价格。因为我不得不使用两个不同的数据库,所以 dfs 的大小不同,主要是由于公司 ('tic') and/or 日期 ('year') 不匹配。

这是 fund_df 的示例:

        tic       assets      year
0      AAPL       123.99      1999
1      AAPL       143.20      2000
..     ...          ...       ...
200    GMCF         9.56      2013
201    GMCF        11.21      2014
..     ...          ...       ...
1543   TSLA       201.23     2015
1544   TSLA       233.49     2016

而 prices_df 看起来像这样:

        tic       prices      year
0      MPRD       56.789      2000
1      MPRD       48.222      2001
..     ...          ...       ...
200    GM         87.991      2012
201    GM        102.334      2013
..     ...          ...       ...
1543   ZZ         34.567      2017
1544   ZZ         29.887      2018

我的目标是统一这两个 df,以便我可以同时使用基本值和价格值。然而,因为我担心数据集在 tic 和年份的观点下都不同,我希望基于需要在两个级别上的匹配来统一这些值,以便 TSLA 在 2015 年的基本值与2015 年 TSLA 的价格。

我试过下面这段代码:

merged_df = merge(fund_df, prices_df, by.fund_df=['tic', 'year'], by.prices_df['tic', 'year'], all = TRUE)

但是我不断收到此错误消息:

SyntaxError: keyword can't be an expression

任何人都可以帮我找到一个解决方案来合并基于 tic 和年份约束的两个 dfs 吗?

提前感谢您的帮助,非常感谢!

根据 documentationpandas.merge 的语法是:

merged_df = merge(
    fund_df,                     # left dataframe
    prices_df,                   # right dataframe
    left_on=['tic', 'year'],     # columns to join on in left dataframe
    right_on=['TICKER', 'year'], # columns to join on in right dataframe
    how='outer')                 # type of join (e.g. inner, outer, left, etc.)