我有一个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的来源以及计数的格式为何。
答案 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})
还原此行为。但是,如果没有真实文件,很难重现该问题。