本帖最后由 BIO-张磊 于 2020-6-16 22:26 编辑
我把你的数据弄下来了,但是我不知道怎么把数据输入成2019-01-05 21:56:46这种格式,我的是2018/12/27 21:58是这种格式,不过不影响最终结果import pandas as pd
data = pd.read_csv("你的文件.csv")#我用的是csv文件格式,跟xls差不多,不用纠结
data["date"] = data["time"].str.split(" ",expand = True)[0]#把time列的日期时间根据 空格符 进行分列获得日期,并形成原始数据新的date一列
##注意,我不知道2019-01-05 21:56:46你这个数据之间是不是空格作为分割符,如果是其他的分隔符,自己修改.split("这里修改分隔符",expand = True)
给你看一下到现在的结果,如下,可以看见我们生成了新的日期一列
id time jd wd date
0 1 2018/12/27 21:58 118.840541 32.125329 2018/12/27
1 1 2018/12/27 21:58 118.840396 32.125353 2018/12/27
2 1 2018/12/27 21:59 118.840396 32.125353 2018/12/27
3 1 2018/12/27 21:59 118.840541 32.125329 2018/12/27
4 1 2018/12/27 21:59 118.840469 32.125341 2018/12/27
5 1 2018/12/28 0:27 118.840024 32.123267 2018/12/28
。。。。。。。
然后是分组data_date = data["date"].drop_duplicates()#获得不重复的时期
给你看一下data_date结果
0 2018/12/27
5 2018/12/28
9 2018/12/29
19 2018/12/30
28 2019/1/3
31 2019/1/5
Name: date, dtype: object
接着,我们进行分组data_group = data.groupby(["date"])根据date列进行分组,这个结果你是看不到的。。无法展示
最后,我们输入文件for each_date in data_date:##根据不重复的日期循环,获得相应日期的所有数据
data_each_date = data_group.get_group(each_date)###这里是数据,你可以看一下是什么样子的,见最下方***标注的
data_each_date.to_csv("%s.csv" % each_date,index = False)###注意,如果你的日期是2018/12/27这样的,是没法生成文件名的,因为文件名不能包含/符号,如果是2019-01-05,则可以生成文件名
***这是for循环当中的一个,可以看见只有一个日期,如果你觉得最后一列date不想要了可以在循环内把这一列给去除掉,这个比较简单,我就不写了
id time jd wd date
0 1 2018/12/27 21:58 118.840541 32.125329 2018/12/27
1 1 2018/12/27 21:58 118.840396 32.125353 2018/12/27
2 1 2018/12/27 21:59 118.840396 32.125353 2018/12/27
3 1 2018/12/27 21:59 118.840541 32.125329 2018/12/27
4 1 2018/12/27 21:59 118.840469 32.125341 2018/12/27
总结,利用了dateframe的str.split、drop_duplicates、groupby、和get_group四个方法,并最终用for循环依次生成相应文件
满意请采纳,谢谢 |