【问题标题】:Merging data frames based on value in row and column name根据行名和列名中的值合并数据框
【发布时间】:2020-05-30 08:36:50
【问题描述】:

我处理财务数据并尝试合并两个 pandas 数据框。

在第一个数据框中,我有公司名称、股票代码和日期等信息。

    Date       Ticker     Company
0   2020-01-15 CHR.CO     Chr. Hansen
1   2020-01-15 PNDORA.CO  Pandora A/S

在我的第二个 df 中,我有一个日期和某些给定日期的股票收盘价。

    Date        CHR.CO       COLO-B.CO  DANSKE.CO   PNDORA.CO   VWS.CO
0   2020-01-15  89.5         89.5        187.39      54.4       552.0
1   2020-01-16  90           88.0        184.61      55.2       550.0

如何合并这两个数据框,以便在第一个数据框中获得收盘价?

这是所需的输出:

Date       Ticker     Company         Close_price
0   2020-01-15 CHR.CO     Chr. Hansen 89.5
1   2020-01-15 PNDORA.CO  Pandora A/S 54.4

使用下面的行,我合并了两个数据框,同时还获取了所有公司的所有代码和收盘价。

full = new_df.merge(stocks_close, on = "Date")

【问题讨论】:

    标签: python pandas merge concat


    【解决方案1】:

    merge 之前添加DataFrame.melt 并在参数on 中指定["Date",'Ticker'] 两列:

    df = stocks_close.melt(id_vars='Date', var_name='Ticker', value_name='Close_price')
    full = new_df.merge(df, on = ["Date",'Ticker'])
    print (full)
             Date     Ticker      Company  Close_price
    0  2020-01-15     CHR.CO  Chr. Hansen         89.5
    1  2020-01-15  PNDORA.CO  Pandora A/S         54.4
    

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多