每天如何计算条目?

时间:2019-05-21 12:43:45

标签: python pandas csv

我有一个csv文件,其中“时间”列中的下载时间为日期时间,并希望计算一天中的下载次数。 因此示例中的输出应为 [2004-01-05 1] [2004-01-06 11]

ip           time            cik    accession
12.108.130.jcf  05.01.04 17:56  1096142 0001179022-04-000019
12.108.130.jcf  06.01.04 08:31  1096142 0001179022-04-000005
12.108.130.jcf  06.01.04 08:34  1096142 0001179022-04-000006
12.108.130.jcf  06.01.04 08:34  1096142 0001179022-04-000007
12.108.130.jcf  06.01.04 08:35  1096142 0001179022-04-000008
12.108.130.jcf  06.01.04 08:36  1096142 0001179022-04-000009
12.108.130.jcf  06.01.04 08:36  1096142 0001179022-04-000010
12.108.130.jcf  06.01.04 08:36  1096142 0001179022-04-000011
12.108.130.jcf  06.01.04 08:37  1096142 0001179022-04-000012
12.108.130.jcf  06.01.04 08:39  1096142 0001179022-04-000013
12.108.130.jcf  06.01.04 08:39  1096142 0001179022-04-000014
12.108.130.jcf  06.01.04 08:40  1096142 0001179022-04-000015
df = pd.read_csv('12.108.130.jcf.csv')
df['time'] = pd.DatetimeIndex(df.time).normalize()
df['count'] = df.groupby('time')['time'].transform('count')
df = df[['time','count']]
print(df)

我变成类似

的输出
         time                         count
0     2004-01-05 1970-01-01 00:00:00.000000001
1     2004-01-06 1970-01-01 00:00:00.000000011

我无法解释日期1970-01-01的来源以及计数的格式为何。

2 个答案:

答案 0 :(得分:0)

由于您不希望将数据框与计数对齐,而不是

df['count'] = df.groupby('time')['time'].transform('count')

只做

df.groupby('time')['time'].count()

输出:

time
2004-05-01     1
2004-06-01    11
Name: time, dtype: int64

答案 1 :(得分:0)

由于我难以理解的原因,count列的类型为datetime,而Timestamp(1)的列为'1970-01-01 00:00:00.000000001',这是Unix时间+ 1微秒。

您可以使用df = df.astype({'count': int})还原此行为。但是,如果没有真实文件,很难重现该问题。