计算数据集中存在多少个不同的日期

时间:2018-10-15 21:55:35

标签: python pandas

我有一个csv数据集,其中逐行包含许多Unix时间戳以及一些坐标:

"2018-07-13 14:04:53",20.61467382,-100.40038540
"2018-07-13 14:04:53",20.61507289,-100.40076548
"2018-07-13 14:04:53",20.61516937,-100.40073449
"2018-07-13 15:01:25",20.61535620,-100.40057307
"2018-07-13 15:01:25",20.59975566,-100.37821134
"2018-07-14 12:55:13",20.59858772,-100.37838086
"2018-07-14 13:08:06",20.59864831,-100.37822228
"2018-07-14 21:51:54",20.59862009,-100.37835681
"2018-07-15 11:53:47",20.59875168,-100.37830434
"2018-07-15 12:02:01",20.59861465,-100.37837653

我想计算出现的不同日期的数量。我怎样才能做到这一点? 在这种情况下,对于此数据集,我的for循环的正确结果将是3。7月13日,14日和15日。我想我必须每天使用熊猫对其进行排序?

3 个答案:

答案 0 :(得分:3)

假设这些列是日期时间列

df.iloc[:, 0].dt.normalize().nunique()

3

只需确定

pd.to_datetime(df.iloc[:, 0]).dt.normalize().nunique()

3

dt是日期时间访问器,允许您获取date属性,该属性是日期时间的日期部分。然后nunique通过获取唯一值的数量来完成工作。


根据@root的建议dt.normalize()(而非dt.date

编辑)

答案 1 :(得分:1)

使用哈希集!

import csv

with open('dates.csv', 'rb') as csvfile:
    data = list(csv.reader(csvfile))

unique_dates = set()
for row in data:
    date = row[0].split()[0]
    unique_dates.add(date)

print 'We have {} unique dates !'.format(len(unique_dates))

答案 2 :(得分:0)

一旦您读入DataFrame文件,就可以使用datetimesset理解而不使用csv来获得相同结果的方法

In [18]: import csv

In [19]: import datetime

In [21]: with open('dates.csv') as csvfile:
    ...:     data = list(csv.reader(csvfile))

In [22]: {datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S').date() for row in data)}
Out[22]:
{datetime.date(2018, 7, 13),
 datetime.date(2018, 7, 14),
 datetime.date(2018, 7, 15)}