如何将每日总额作为单独列匹配添加至持仓DataFrame?
给DF1添加对应日期的总计列解决方案
方法1:使用merge左连接(推荐新手)
这是最直观的方式,通过日期字段将两个DataFrame左连接,保留DF1的所有行并填充对应日期的总计值:
import pandas as pd # 示例数据(替换成你的真实数据) df1 = pd.DataFrame({ 'Date': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02'], 'InstrumentID': ['AAPL', 'MSFT', 'GOOG', 'AMZN'], 'DollarAmt': [1000, 2000, 1500, 3000] }) df2 = pd.DataFrame({ 'Date': ['2024-01-01', '2024-01-02'], 'Total': [3000, 4500] }) # 左连接合并,确保DF1所有行保留 df1_with_total = df1.merge(df2, on='Date', how='left')
执行后df1_with_total就会包含每行对应的日期总计值,和DF2的Total完全一致。
方法2:使用map映射
先把DF2转成日期到总计的字典,再通过map给DF1赋值:
# 将DF2转为日期-总计的字典 total_map = df2.set_index('Date')['Total'].to_dict() # 给DF1新增Total列 df1['Total'] = df1['Date'].map(total_map)
关键注意事项
- 确保两个DataFrame的
Date字段格式完全一致:如果一个是字符串、一个是datetime类型,会导致匹配失败。可以用以下代码统一格式:df1['Date'] = pd.to_datetime(df1['Date']) df2['Date'] = pd.to_datetime(df2['Date'])
内容的提问来源于stack exchange,提问作者bigjdawg43
相关产品推荐
相关产品推荐

