в дальние группы.
оложим, у меня есть большой фрейм данных, как это:
A B C
27/6/2017 4:00:00 928.04 4.83
27/6/2017 4:20:00 927.71 4.61
27/6/2017 4:40:00 928.22 4.49
27/6/2017 5:00:00 898.74 3.81
27/6/2017 5:20:00 895.16 3.55
27/6/2017 5:40:00 895.05 3.4
27/6/2017 6:00:00 895.68 3.3
27/6/2017 16:20:00 662.45 1.52
27/6/2017 16:40:00 639.98 1.48
27/6/2017 17:40:00 732.02 1.79
27/6/2017 18:00:00 722.63 1.98
27/6/2017 18:20:00 713.26 1.79
27/6/2017 18:40:00 705.8 1.54
27/6/2017 19:00:00 652.1 1.51
27/6/2017 19:20:00 638.58 1.68
27/6/2017 19:40:00 633.14 1.66
27/6/2017 20:00:00 654.66 1.45
Я хочу разделить фрейм данных на основе разницы часов, т. Е. Если разница между двумя временными метками превышает 4 часа, он разделит фрейм данных. Затем я хочу разделить эти два фрейма данных в подгруппах на основе диапазона значений B. Я хочу сохранить все эти группы и подгруппы в отдельных файлах CSV.
Желаемый вывод:
Группа 1:
A B C
27/6/2017 4:00:00 928.04 4.83
27/6/2017 4:20:00 927.71 4.61
27/6/2017 4:40:00 928.22 4.49
27/6/2017 5:00:00 898.74 3.81
27/6/2017 5:20:00 895.16 3.55
27/6/2017 5:40:00 895.05 3.4
27/6/2017 6:00:00 895.68 3.3
Group2:
A B C
27/6/2017 16:20:00 662.45 1.52
27/6/2017 16:40:00 639.98 1.48
27/6/2017 17:40:00 732.02 1.79
27/6/2017 18:00:00 722.63 1.98
27/6/2017 18:20:00 713.26 1.79
27/6/2017 18:40:00 705.8 1.54
27/6/2017 19:00:00 652.1 1.51
27/6/2017 19:20:00 638.58 1.68
27/6/2017 19:40:00 633.14 1.66
27/6/2017 20:00:00 654.66 1.45
Зоны:
Группа1 Зона1:
A B C
27/6/2017 4:00:00 928.04 4.83
27/6/2017 4:20:00 927.71 4.61
27/6/2017 4:40:00 928.22 4.49
GRoup1 ZOne2:
A B C
27/6/2017 5:00:00 898.74 3.81
27/6/2017 5:20:00 895.16 3.55
27/6/2017 5:40:00 895.05 3.4
27/6/2017 6:00:00 895.68 3.3
Нравится.
Я попробовал некоторые логики, чтобы достичь этого, но я не смог этого сделать.
Код:
time_diff = df["Time"].diff()
zones = []
dfs = DataFrame
zone = (dfs["Time"] >= (dfs["Time"].shift() + time_diff[1]*12)).cumsum()
zone_grp = dfs.groupby(zone)
xyz = []
for k,g in zone_grp:
if len(g) >= 30:
zones.append(g)
else:
pass
for m in range(len(zones)):
zone_df = DataFrame(zones[m])
x = range(len(zone_df))
y = zone_df["T401FN1VT4000"]
abc = Series((linregress(x,y)))
abc = DataFrame(abc).T
slope = abc[0].tolist()
intercept = abc[1].tolist()
abc = DataFrame({"Slope":slope,"Intercept":intercept})
xyz.append(abc)
zone_df.to_csv("Zone_%s.csv" %m, index = False)
xyz = concat(xyz).reset_index()
del xyz["index"]
xyz["Zone"] = xyz.index
xyz = xyz.set_index("Zone")
xyz.to_csv("Coefficients.csv", index = True)
Пожалуйста, помогите мне лучше разделить фрейм данных на основе разницы во времени и помочь мне сохранить группы и подгруппы в CSV-файлах с разными именами.
Любая помощь будет оценена.