微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 月份日数

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

                   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 

我知道有一些使用日历或类似的方法,但鉴于我已经在使用熊猫,必须有一个更简单的方法 – 我假设.

没有这样的日期时间属性,但有一个offset M – 但我不知道如何在没有大量低效率的情况下使用它.

解决方法:

datetime系列现在有一个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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐