根据 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 吗?
提前感谢您的帮助,非常感谢!
根据 documentation,pandas.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.)
我正在处理一个包含财务数据的项目。在这种情况下,我有两个数据框,一个包含基本价值,另一个包含价格。因为我不得不使用两个不同的数据库,所以 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 吗?
提前感谢您的帮助,非常感谢!
根据 documentation,pandas.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.)