【发布时间】:2017-12-17 13:48:26
【问题描述】:
我想将与每个月的第一天关联的值更改为 pandas.Series 我有。例如,给定如下内容:
Date
1984-01-03 0.992701
1984-01-04 1.003614
1984-01-17 0.994647
1984-01-18 1.007440
1984-01-27 1.006097
1984-01-30 0.991546
1984-01-31 1.002928
1984-02-01 1.009894
1984-02-02 0.996608
1984-02-03 0.996595
...
我想更改与1984-01-03、1984-02-01 等关联的值。我已经在这个问题上绞尽脑汁了好几个小时,并且环顾了 Stack Overflow 周围。一些解决方案已经接近。例如,使用:
[In]: series.groupby((m_ret.index.year, m_ret.index.month)).first()
[Out]:
Date Date
1984 1 0.992701
2 1.009894
3 1.005963
4 0.997899
5 1.000342
6 0.995429
7 0.994620
8 1.019377
9 0.993209
10 1.000992
11 1.009786
12 0.999069
1985 1 0.981220
2 1.011928
3 0.993042
4 1.015153
...
快到了,但我正在努力继续前进。
我想做的是将与每年每个月的第一天相关的值设置为 1。
series[m_ret.index.is_month_start] = 1 接近,但这里的问题是is_month_start 只选择日期值为 1 的行。但是在我的系列中,情况并非总是如此,如您所见。比如一月第一天的日期是1984-01-03。
series.groupby(pd.TimeGrouper('BM')).nth(0) 似乎也没有返回第一天,而是我得到了最后一天:
Date
1984-01-31 0.992701
1984-02-29 1.009894
1984-03-30 1.005963
1984-04-30 0.997899
1984-05-31 1.000342
1984-06-29 0.995429
1984-07-31 0.994620
1984-08-31 1.019377
...
我完全被难住了。一如既往,非常感谢您的帮助!谢谢。
【问题讨论】:
标签: python pandas datetime dataframe