开始月份和开始年份到结束月份和年份的循环 python
Loop for starting month and starting year to end month and year python
数据库 df:
month year data
Jan 2017 ggg
Feb 2015 jhjj
Jan 2018 hjhj
Mar 2018 hjhj
and so on
代码:
def data_from_start_month_to_end_month:
for y in range(start_year,end_year):
do something
for m in range(start_month,13):
df = df[(df['month'] == m)&(df['year']== y)]
return df
这将从开始的月份和年份开始代码,但是如果结束月份不是 12 月怎么办,那么它将不起作用。
我想要的输出:
start_month = Sep
start_year = 2000
end_month = Feb
end_year = 2019 say
所以循环应该从 2000 年 9 月到 2019 年 2 月工作,并且只提取那些行的数据。(但我需要函数是通用的而不是硬编码的
谁能帮忙
在将输入转换为日期时间后,您可以使用以下使用 series.between
的函数:
def myf(df,start_month,start_year,end_month,end_year):
s= pd.to_datetime(df['month']+df['year'].astype(str),format='%b%Y')
start = pd.to_datetime(start_month+str(start_year),format='%b%Y')
end = pd.to_datetime(end_month+str(end_year),format='%b%Y')
return df[s.between(start,end)]
myf(df,'Sep',2000,'Feb',2017)
month year data
0 Jan 2017 ggg
1 Feb 2015 jhjj
如果月份是数字,使用 format='%m%Y'
而不是 format='%b%Y'
:
def myf1(df,start_month,start_year,end_month,end_year):
s= pd.to_datetime(df['month'].astype(str)+df['year'].astype(str),format='%m%Y')
start = pd.to_datetime(start_month+str(start_year),format='%b%Y')
end = pd.to_datetime(end_month+str(end_year),format='%b%Y')
return df[s.between(start,end)]
示例 df:
month year data
0 1 2017 ggg
1 2 2015 jhjj
2 1 2018 hjhj
3 3 2018 hjhj
myf1(df,'Sep',2000,'Feb',2017)
month year data
0 1 2017 ggg
1 2 2015 jhjj
数据库 df:
month year data
Jan 2017 ggg
Feb 2015 jhjj
Jan 2018 hjhj
Mar 2018 hjhj
and so on
代码:
def data_from_start_month_to_end_month:
for y in range(start_year,end_year):
do something
for m in range(start_month,13):
df = df[(df['month'] == m)&(df['year']== y)]
return df
这将从开始的月份和年份开始代码,但是如果结束月份不是 12 月怎么办,那么它将不起作用。
我想要的输出:
start_month = Sep
start_year = 2000
end_month = Feb
end_year = 2019 say
所以循环应该从 2000 年 9 月到 2019 年 2 月工作,并且只提取那些行的数据。(但我需要函数是通用的而不是硬编码的
谁能帮忙
在将输入转换为日期时间后,您可以使用以下使用 series.between
的函数:
def myf(df,start_month,start_year,end_month,end_year):
s= pd.to_datetime(df['month']+df['year'].astype(str),format='%b%Y')
start = pd.to_datetime(start_month+str(start_year),format='%b%Y')
end = pd.to_datetime(end_month+str(end_year),format='%b%Y')
return df[s.between(start,end)]
myf(df,'Sep',2000,'Feb',2017)
month year data
0 Jan 2017 ggg
1 Feb 2015 jhjj
如果月份是数字,使用 format='%m%Y'
而不是 format='%b%Y'
:
def myf1(df,start_month,start_year,end_month,end_year):
s= pd.to_datetime(df['month'].astype(str)+df['year'].astype(str),format='%m%Y')
start = pd.to_datetime(start_month+str(start_year),format='%b%Y')
end = pd.to_datetime(end_month+str(end_year),format='%b%Y')
return df[s.between(start,end)]
示例 df:
month year data
0 1 2017 ggg
1 2 2015 jhjj
2 1 2018 hjhj
3 3 2018 hjhj
myf1(df,'Sep',2000,'Feb',2017)
month year data
0 1 2017 ggg
1 2 2015 jhjj