我有一个遵循以下屏幕截图的数据框:
我想编写一个脚本,该脚本将df['value']
中的值添加到列表中。这些值被添加到的列表取决于月份数。所以预期的输出是:
jan = [2345]
feb = [435]
mar = [976,76]
apr = [65,55,33]
may = [61]
jun = [658]
jul = [65]
nov = [3]
dec = [56]
真正的df更为复杂,但问题是可以转移的。 我写的这个脚本没有运气:
jan = []
feb = []
mar = []
apr = []
may = []
jun = []
jul = []
aug = []
sep = []
octo = []
nov = []
dec = []
for ind,i in yr18_df.iterrows():
if i == 1:
jan.append(yr18_df.points)
else i == 2:
feb.append(yr18_df.points)
elif yr18_df.date_month == 3:
mar.append(yr18_df.points)
elif yr18_df.date_month == 4:
apr.append(yr18_df.points)
elif yr18_df.date_month == 5:
may.append(yr18_df.points)
elif yr18_df.date_month == 6:
jun.append(yr18_df.points)
elif yr18_df.date_month == 7:
jul.append(yr18_df.points)
elif yr18_df.date_month == 8:
aug.append(yr18_df.points)
elif yr18_df.date_month == 9:
sep.append(yr18_df.points)
elif yr18_df.date_month == 10:
octo.append(yr18_df.points)
elif yr18_df.date_month == 11:
nov.append(yr18_df.points)
else:
dec.append(yr18_df.points)
答案 0 :(得分:2)
也许像这样:
请考虑以下示例数据框:
In [2368]: df = pd.DataFrame({'value':[2345,123,282,367,213], 'month':[1,2,9,1,2]})
In [2369]: df
Out[2369]:
value month
0 2345 1
1 123 2
2 282 9
3 367 1
4 213 2
In [2374]: import calendar
In [2375]: df['month_name'] = df['month'].apply(lambda x: calendar.month_abbr[x])
In [2384]: month_dict = df.groupby('month_name')['value'].apply(list).to_dict()
In [2386]: for key, val in month_dict.items():
...: print(key,val)
...:
Feb [123, 213]
Jan [2345, 367]
Sep [282]
答案 1 :(得分:2)
月份的名称没有更改,但是可以通过以下措施总结月份。
d = df.groupby('month').agg(list)
答案 2 :(得分:1)
这不是最快也不是最有效的解决方案,但根据您的尝试,认为这是您想要的。
jan = []
feb = []
mar = []
apr = []
may = []
jun = []
jul = []
aug = []
sep = []
oct = []
nov = []
dec = []
for i, row in stack.iterrows():
val = row['value']
month = row['month']
if month == 1:
jan.append(val)
if month == 2:
feb.append(val)
if month == 3:
mar.append(val)
if month == 4:
apr.append(val)
if month == 5:
may.append(val)
if month == 6:
jun.append(val)
if month == 7:
jul.append(val)
if month == 8:
aug.append(val)
if month == 9:
sep.append(val)
if month == 10:
oct.append(val)
if month == 11:
nov.append(val)
if month == 12:
dec.append(val)