我有一个很大的数据集,它有大约6000行和几百列。我已经设法把大部分信息按我需要的方式整理出来,但现在我陷入了困境,因为我无法按一段字符串正确地分组
原始数据的格式如下:
6001 17/11/2019 6:00:00 PM 2019 ... 30.519371 NaN
6002 17/11/2019 6:00:00 PM 2019 ... 0.000000 NaN
6003 17/11/2019 6:00:00 PM 2019 ... 0.000000 NaN
6004 17/11/2019 6:00:00 PM 2019 ... 0.000000 NaN
6005 17/11/2019 6:00:00 PM 2019 ... 0.000000 NaN
[6006 rows x 153 columns]>
首先,我运行了一个查询,根据其中一列筛选出数据。在这之后,我留下了1500行数据,我需要根据2列对它们进行分组,并将第三列中的数字相加。 此代码似乎主要完成了以下工作:
grouped_data = data_drill.groupby(['PeriodStartDate', 'Blast'])
['Calc_DRILLING_Holes'].sum()
结果是:
In[9]: grouped_data
Out[9]:
PeriodStartDate Blast
1/09/2019 6:00:00 AM 6317.0 70.786625
7253.0 60.964185
8140.0 41.540451
1/09/2019 6:00:00 PM 6317.0 77.692637
7253.0 66.911911
8140.0 45.593178
1/10/2019 6:00:00 AM 2040.0 50.791661
2379.0 90.084856
5271.0 66.029160
1/10/2019 6:00:00 PM 2040.0 42.119914
2379.0 98.873622
5271.0 72.471029
1/11/2019 6:00:00 AM 2376.0 96.204423
这正是我所需要的,除了在这里,由于格式的日期是提出的,一天的信息是分开的上午6点和下午6点块。我不需要这种分离,我需要整个24小时的综合数据
我试着用str.slice
只取PeriodStartDate列的前10位数字,但我似乎做得不对
最后,正如您在上面的输出中所看到的,结果日期是以一种奇怪的方式排序的——9月1日之后是10月1日,而在这两者之间有整整一个月的日期。有没有办法让他们得到妥善处理
提前谢谢
您可以使用
str
属性:这假设索引将适用于所有日期
或者,将该列转换为
datetime
并使用data_drill['PeriodStartDate'].dt.date
如果列是datetime类型,那么最好只删除时间戳,而只保留日期
然后你可以按日期分组
如果它不是datetime对象(如果您在分割它时遇到问题,那么我会怀疑它是),您可以通过转换它来实现这一点
之后,对于排序,只需按分组后的日期排序即可
相关问题 更多 >
编程相关推荐