将yyyy-mm-dd转换为%m-%d pandas

时间:2017-03-15 01:17:16

标签: python pandas

我有一个列如下(未编入索引)日期,范围从2005年到2015年。

我想排除2015年的所有日期并存储在数据框中。在过滤后的数据中,我想将其格式转换为%m-%d(即2014-11-12应为11-12),并将所有数据分组为%m-%d。

Date           Data_value
2014-11-12     12
2009-04-29     11
2008-05-26     -4
2005-11-11     18
2014-02-27     24
2010-10-01     0
2010-06-29     13
2005-10-04     34
2007-12-14     27
2011-04-21     -5
2013-01-16     9

1 个答案:

答案 0 :(得分:0)

这个问题有很多部分,并且缺少很多信息。从表面看一切,您需要确保您的Date列实际上是类似日期的类型。在那里,您可以使用df['Date'].dt.strftime()轻松计算新列,然后在该列上进行分组。

看起来像这样:

from io import StringIO

import pandas

datafile = StringIO("""\
Date           Data_value
2014-11-12     12
2009-04-29     11
2008-05-26     -4
2005-11-11     18
2014-02-27     24
2010-10-01     0
2010-06-29     13
2005-10-04     34
2007-12-14     27
2011-04-21     -5
2013-01-16     9
""")

excluded_year = 2013

print(
    pandas.read_table(datafile, sep='\s+', parse_dates=['Date'])
        .assign(year=lambda df: df['Date'].dt.year)
        .query("year != @excluded_year")
        .assign(month_day=lambda df: df['Date'].dt.strftime('%m-%d'))
        .groupby(by=['month_day'])
        .sum()
        .reset_index()
)
   month_day  Data_value
0      02-27          24
1      04-21          -5
2      04-29          11
3      05-26          -4
4      06-29          13
5      10-01           0
6      10-04          34
7      11-11          18
8      11-12          12
9      12-14          27