代码之家  ›  专栏  ›  技术社区  ›  Chetan_Vasudevan

使用熊猫的python数据帧

  •  0
  • Chetan_Vasudevan  · 技术社区  · 8 年前

    我有一个数据集,如下所示

      [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[0] 有 [25/May/2015:23:11:15 和 df[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:])
    
    3 回复  |  直到 8 年前
        1
  •  2
  •   AChampion    8 年前

    将该列转换为 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
    
        2
  •  0
  •   Angelo Cardellicchio    8 年前

    可以将日期时间设置为数据帧的索引,然后使用 loc 和 to_csv 熊猫的功能。显然,正如其他答案所指出的,您应该在读取数据帧时将日期转换为日期时间。

    例子:

    df = df.set_index(['date'])
    df.loc['25/05/2018 23:11:15':'25/05/2018 23:11:15'].to_csv('df_data.csv')
    
        3
  •  0
  •   Narendra Prasath    8 年前

    试试这个,

    ## 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])