簡體   English   中英

每天如何計算條目?

[英]How to count entries per day?

我有一個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的來源以及計數的格式為何。

由於您不希望將數據框與計數對齊,因此

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

由於我難以理解的原因, count列的類型為datetime ,而Timestamp(1)'1970-01-01 00:00:00.000000001' ,這是Unix時間的起點+ 1微秒。

您可以使用df = df.astype({'count': int})恢復此行為。 但是,如果沒有真實文件,很難重現該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM