我有一个带有日期时间索引的数据框,我想将某些列乘以该月的天数。
TUFNWGTP TELFS t070101 t070102 t070103 t070104
TUDIARYDATE
2003-01-03 8155462.672158 2 0 0 0 0
2003-01-04 1735322.527819 1 0 0 0 0
2003-01-04 3830527.482672 2 60 0 0 0
2003-01-02 6622022.995205 4 0 0 0 0
2003-01-09 3068387.344956 1 0 0 0 0
在这里,我想将以
t
开头的所有列乘以31。即,预期输出为 TUFNWGTP TELFS t070101 t070102 t070103 t070104
TUDIARYDATE
2003-01-03 8155462.672158 2 0 0 0 0
2003-01-04 1735322.527819 1 0 0 0 0
2003-01-04 3830527.482672 2 1680 0 0 0
2003-01-02 6622022.995205 4 0 0 0 0
2003-01-09 3068387.344956 1 0 0 0 0
我知道有一些使用
calendar
或类似方法的方法,但是鉴于我已经在使用pandas
,必须有一种更简单的方法-我想。没有这样的
datetime
属性,但是有一个offset M
-但是我不知道如何在没有效率低下的情况下使用它。 最佳答案
现在,日期时间序列有一个 Series.dt.daysinmonth
属性。这是一个基于杰夫的答案的例子。
In [3]: df = pd.DataFrame({'date' : pd.date_range('20120101',periods=15,freq='M') })
In [4]: df['year'] = df['date'].dt.year
In [5]: df['month'] = df['date'].dt.month
In [6]: df['days_in_month'] = df['date'].dt.daysinmonth
In [7]: df
Out[7]:
date year month days_in_month
0 2012-01-31 2012 1 31
1 2012-02-29 2012 2 29
2 2012-03-31 2012 3 31
3 2012-04-30 2012 4 30
4 2012-05-31 2012 5 31
5 2012-06-30 2012 6 30
6 2012-07-31 2012 7 31
7 2012-08-31 2012 8 31
8 2012-09-30 2012 9 30
9 2012-10-31 2012 10 31
10 2012-11-30 2012 11 30
11 2012-12-31 2012 12 31
12 2013-01-31 2013 1 31
13 2013-02-28 2013 2 28
14 2013-03-31 2013 3 31
关于python - 月中的天数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28819470/