如何根据周分割pandas数据框并保存为CSV?

时间:2018-01-08 12:30:39

标签: python pandas dataframe

我有一个pandas数据框如下。这个数据框大约有一个月的时间。如何根据周划分此数据框?我需要每4周保存一次作为单独的4个CSV文件。

Time Stamp              Id  Latitude    Longitude
01/10/2016 15:22:51:700 1      23        50
01/10/2016 16:28:08:026 1      23        50
01/10/2016 16:28:09:026 1      12        45
02/10/2016 19:00:08:026 2      23        50
02/10/2016 20:28:08:026 1      23        50
03/10/2016 19:00:08:000 2      23        50
03/10/2016 01:02:33:123 2      23        50
03/10/2016 06:15:08:500 1      23        50
03/10/2016 10:01:07:022 3      28        88
......
......
31/10/2016 13:09:17:044 1      33        80

我的预期输出是:

Time Stamp              Id  Latitude    Longitude
01/10/2016 15:22:51:700 1      23        50
01/10/2016 16:28:08:026 1      23        50
01/10/2016 16:28:09:026 1      12        45
02/10/2016 19:00:08:026 2      23        50
02/10/2016 20:28:08:026 1      23        50
03/10/2016 19:00:08:000 2      23        50
03/10/2016 01:02:33:123 2      23        50
03/10/2016 06:15:08:500 1      23        50
03/10/2016 10:01:07:022 3      28        88
......
......
07/10/2016 03:09:10:066 5      28        78

这应该是我的第一周。下周将于2016年10月8日至2017年10月14日,2016年10月15日至2017年10月21日以及2016年10月22日至2017年10月31日期间。

2 个答案:

答案 0 :(得分:2)

您可以先将列转换为@Override public void forEachRemaining(Consumer<? super Node> action) { Node current = pendingNode; if(current != null) { pendingNode = null; action.accept(current); } for(;;) { current = pending.poll(); if(current == null) break; traverseLocal(action, current); } } private void traverseLocal(Consumer<? super Node> action, Node current) { do { action.accept(current); Node child = current.getLeft(); if(child!=null) traverseLocal(action, child); current = current.getRight(); } while(current != null); } ,然后再转换为strftime datetime

上一轮year-weekofyear并致电to_csv

groupby

答案 1 :(得分:1)

假设Time Stamp属于datetime dtype:

df.groupby(pd.Grouper(key='Time Stamp', freq='W')) \
  .apply(lambda x: x.to_csv(r"/path/to/{}W{}.csv".format(x.name.year,x.name.week)))