【问题标题】:How to add a column in pandas with the value depending on the date如何在熊猫中添加一列,其值取决于日期
【发布时间】:2022-01-26 11:01:10
【问题描述】:

我正在尝试将我的投资组合数字化。我有一个dataframe,其中包含自某个时期(01-01-2020) 以来的每日股票收盘信息,我想添加一列显示我持有的股票数量,例如在01-01-2020 上,我的APPL 为零并且从25-06-2020 我有 2 个,01-09-2021 我有 1 个。

我有另一个dataframe,它会在我的股票余额发生变化时跟踪它(但不是两者之间的日期)。这个例子看起来像这样;

Date        Balance
25-06-2020  2
01-09-2021  1

我知道 df['balance'] = 0 将添加一个全为零的列,但是如何根据日期添加条件?

总之,我有这个

Date        Price 
01-01-2020  $100
01-02-2020  $100
...
25-06-2020  $120
26-06-2020  $130
...
01-09-2021  $145
02-09-2021  $146

我想解决这个问题

Date        Price  Balance
01-01-2020  $100   0
01-02-2020  $100   0
...
25-06-2020  $120   2
26-06-2020  $130   2
...
01-09-2021  $145   1
02-09-2021  $146   1

【问题讨论】:

    标签: python python-3.x pandas dataframe datetime


    【解决方案1】:

    如果可能,可以在字典中指定Balance 的第一个值,可以使用Series.map 前向填充缺失值:

    d = {'01-01-2020':0,'25-06-2020':2,'01-09-2021':1}
    
    df['Balance'] = df['Date'].dt.strftime('%Y-%m-%d').map(d).ffill().astype(int)
    

    编辑:对新列 Balance 使用左连接,然后在 df1['Date'] 之后转发填充值,首先替换为 0

    df['Date'] = pd.to_datetime(df['Date'])
    df1['Date'] = pd.to_datetime(df1['Date'])
    
    df2 = df.merge(df1[['Date','Balance']], on='Date', how='left')
    df2['Balance'] = df2['Balance'].ffill().fillna(0).astype(int)
    

    【讨论】:

    • 如果我只添加三个日期就可以了,但我有一些股票的余额变化更频繁
    • @user1234 - 嗯,你能详细解释一下Balance 的变化方式和时间吗?
    • 每次我买入或卖出一些股票时,我的股票总余额都会发生变化。所以有一天我可以持有 100 股,一周后 20 股,再一周后 250 股
    • @user1234 - 怎么算?根据我不清楚的样本数据。
    • @user1234 - 答案已编辑。
    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2017-08-03
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多