0

我的数据框如下所示:

            Dividends  Stock Splits
Date                               
2014-08-13       0.28           0.0
2015-04-27       0.30           0.0
2015-07-31       0.30           0.0
2016-05-05       0.30           0.0
2016-08-15       0.30           0.0
2017-05-04       0.30           0.0
2017-08-11       0.33           0.0
2018-05-03       0.50           0.0
2018-08-08       0.60           0.0
2019-05-02       0.60           0.0
2019-05-17       0.30           0.0
2019-08-05       0.30           0.0
2019-11-18       0.30           0.0
2020-04-07       0.33           0.0
2020-05-12       0.33           0.0

我喜欢将每年的股息相加并显示如下:

2015  0.60
2016  0.60
2017  0.63
2018  1.10
....

任何帮助将不胜感激。非常感谢!

4

2 回答 2

2

您可以'Date'使用 将索引转换为日期时间pd.to_datetime,然后根据索引年份尝试groupby+ :sum

df.index=pd.to_datetime(df.index)
df.groupby(df.index.year)['Dividends'].sum()

输出:

Date
2014    0.28
2015    0.60
2016    0.60
2017    0.63
2018    1.10
2019    1.50
2020    0.66
于 2020-08-08T05:12:09.690 回答
0
  1. 确保您的数据框按日期索引,并且列是数字数据类型
  2. 那么这是一个简单的案例resample()
data = """ Date           Dividends  Stock Splits
2014-08-13       0.28           0.0
2015-04-27       0.30           0.0
2015-07-31       0.30           0.0
2016-05-05       0.30           0.0
2016-08-15       0.30           0.0
2017-05-04       0.30           0.0
2017-08-11       0.33           0.0
2018-05-03       0.50           0.0
2018-08-08       0.60           0.0
2019-05-02       0.60           0.0
2019-05-17       0.30           0.0
2019-08-05       0.30           0.0
2019-11-18       0.30           0.0
2020-04-07       0.33           0.0
2020-05-12       0.33           0.0"""
a = [[t.strip() for t in re.split("  ",l) if t.strip()!=""]  for l in [re.sub("([0-9]?[ ])*(.*)", r"\2", l) for l in data.split("\n")]]
df = pd.DataFrame(a[1:], columns=a[0])
df["Date"] = pd.to_datetime(df["Date"])
df = df.set_index("Date").astype({"Dividends":"float64","Stock Splits":"float64"})
df.resample("Y").agg({"Dividends":"sum"})

输出

    Dividends
Date    
2014-12-31  0.28
2015-12-31  0.60
2016-12-31  0.60
2017-12-31  0.63
2018-12-31  1.10
2019-12-31  1.50
2020-12-31  0.66

于 2020-08-08T05:10:28.257 回答