【发布时间】:2021-01-28 23:01:43
【问题描述】:
我想知道是否有更简洁的方法来编写下面的代码。我基本上有一个包含三列的数据框:“日期”、“Ramp_1”、“Ramp_2”。我的目标是按月分隔数据(Ramp_1 和 Ramp_2)。日期包含以下格式的多年数据:%Y-%m-%d %H:%M。我创建了一个只有月份的新列,然后我使用 df.loc 创建了新的数据框:
mon=['jan','feb','mar','apr', 'may', 'jun','jul','aug','sep','oct','nov','dec']
for i in range(len(mon)):
mon[i] = df.loc[df["month"]==(i+1), ["Ramp_1","Ramp_2"]]
我想创建 12 个新数据框,每个数据框以一个月命名。我最终没有这样做,而是创建了一个数据框列表。所以我手动写了这样的代码:
jan=mon[0]
feb=mon[1]
mar=mon[2]
apr=mon[3]
may=mon[4]
jun=mon[5]
jul=mon[6]
aug=mon[7]
sep=mon[8]
octo=mon[9]
nov=mon[10]
dec=mon[11]
我的问题是:有没有更简洁的写法?我知道有,但我一直无法弄清楚!
我也试过这样做:
mon=['jan','feb','mar','apr', 'may', 'jun','jul','aug','sep','oct','nov','dec']
for i in range(len(mon)):
name = mon[i]
name = df.loc[df["month"]==(i+1), ["Ramp_1","Ramp_2"]]
我的数据样本:
Dates Ramp_1 Ramp_2 month
0 2016-01-01 02:00:00 -823.0 -566.47 1
1 2016-01-01 03:00:00 -899.0 -586.54 1
2 2016-01-01 04:00:00 -652.0 -473.33 1
3 2016-01-01 05:00:00 -304.0 -178.20 1
4 2016-01-01 06:00:00 99.0 273.08 1
... ... ... ... ...
35045 2019-12-31 11:00:00 -613.0 -793.54 12
35046 2019-12-31 12:00:00 -311.0 -1159.81 12
35047 2019-12-31 13:00:00 -530.0 -964.18 12
35048 2019-12-31 14:00:00 79.0 538.85 12
35049 2019-12-31 15:00:00 181.0 574.21 12
【问题讨论】:
-
您能否提供一个示例数据集作为逗号分隔的文本?
-
是的!一分钟!
-
日期 Ramp_1 Ramp_2 月 0 2016-01-01 02:00:00 -823.0 -566.47 1 1 2016-01-01 03:00:00 -899.0 -586.54 1 2 2016-01-01 04:00:00 -652.0 -473.33 1 3 2016-01-01 05:00:00 -304.0 -178.20 1 4 2016-01-01 06:00:00 99.0 273.08 1 ... ... ... . .. ... 35045 2019-12-31 11:00:00 -613.0 -793.54 12 35046 2019-12-31 12:00:00 -311.0 -1159.81 12 35047 2019-12-31 13:00:00 -530.0 -964.18 12 35048 2019-12-31 14:00:00 79.0 538.85 12 35049 2019-12-31 15:00:00
-
请考虑发布您的数据,例如this。
-
这样更好吗?
标签: python pandas dataframe loops