我有一个带有日期时间索引的数据框,我想将某些列乘以该月的天数。

                   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/

10-10 21:37