簡體   English   中英

使用熊貓的Python數據框架

[英]Python data-frame using pandas

我有一個數據集,如下所示

  [25/May/2015:23:11:15  000]
  [25/May/2015:23:11:15  000]
  [25/May/2015:23:11:16  000]
  [25/May/2015:23:11:16  000]

現在,我將其設為DF,並且df[0]具有[25/May/2015:23:11:15df[1]具有000] 我想將所有以相同秒結尾的數據發送到文件。 在上面的示例中,它們以15和16作為秒結束。 因此,所有內容都以15秒結尾,一個又一個結到另一個,還有更多

我已經嘗試了以下代碼

   import pandas as pd
   data = pd.read_csv('apache-access-log.txt', sep=" ", header=None)
   df = pd.DataFrame(data)
   print(df[0],df[1].str[-2:])

將該列轉換為datetime將使其更容易處理,例如:

df['date'] = pd.to_datetime(df['date'], format='%d/%B/%Y:%H:%m:%S')

您可以簡單地遍歷groupby() ,例如:

In []:
for k, frame in df.groupby(df['date'].dt.second):
     #frame.to_csv('file{}.csv'.format(k))
     print('{}\n{}\n'.format(k, frame))

Out[]: 
15
                 date  value
0 2015-11-25 23:00:15      0
1 2015-11-25 23:00:15      0

16
                 date  value
2 2015-11-25 23:00:16      0
3 2015-11-25 23:00:16      0

您可以將日期時間設置為數據的索引,然后使用locto_csv Pandas的函數。 顯然,正如其他答案所指出的那樣,您應該在讀取數據框時將日期轉換為日期時間。

例:

df = df.set_index(['date'])
df.loc['25/05/2018 23:11:15':'25/05/2018 23:11:15'].to_csv('df_data.csv')

試試這個

## Convert a new column with seconds value    
df['seconds'] = df.apply(lambda row: row[0].split(":")[3].split(" ")[0], axis=1)

for sec in df['seconds'].unique():  
    ## filter by seconds
    print("Resutl ",df[df['seconds'] == sec])

暫無
暫無

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

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