我根据年份和月份分离我的数据框,但我想让它更加自动化。现在我必须对它们进行硬编码:
def year_month_open(c):
c.Opened_Date.astype('string')
x = c.Opened_Date.strftime('%Y-%m')
return x
df['year_month'] = df.apply(year_month_open,axis=1)`
Feb20 = df[df['year_month']=='2020-02']
Mar20 = df[df['year_month']=='2020-03']
Apr20 = df[df['year_month']=='2020-04']
May20 = df[df['year_month']=='2020-05']
Jun20 = df[df['year_month']=='2020-06']
Jul20 = df[df['year_month']=='2020-07']
Aug20 = df[df['year_month']=='2020-08']
Sep20 = df[df['year_month']=='2020-09']
Oct20 = df[df['year_month']=='2020-10']
Nov20 = df[df['year_month']=='2020-11']
Dec20 = df[df['year_month']=='2020-12']
Jan21 = df[df['year_month']=='2021-01']
Feb21 = df[df['year_month']=='2021-02']
Mar21 = df[df['year_month']=='2021-03']
你能建议一种方法来避免对它们进行编码吗,这样当我在下个月附加另一个数据集时,我就不必输入
Apr21 = Mar21 = df[df['year_month']=='2021-04']
答案 0 :(得分:0)
首先,我建议您考虑是否确实需要这样做,或者其他解决方案(例如函数)是否更合适。例如,如果您使用带有月-年字符串的多索引作为索引,您可以只执行 df['Apr21']
而不是创建单独的数据框。如果您想创建单独的变量,有以下内容,但请记住,您应该小心使用 eval
函数(如果命令进入 year_month
列,那可能非常危险)。
import calendar
def convert_date(date)
year = date[:4]
month_num = date[4:]
month = calendar.month_name[int(month_num)][:3]
return month+year
for group in df.groupby(year_month):
month_name = convert_date(group[0])
month_df = group[1]
eval("{} = month_df".format(month_name))