我有一个列如下(未编入索引)日期,范围从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
答案 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