2017-02-24 9 views
0

複数のシートを持つxlsxファイルがあります。シートには、列A にタイムスタンプ(文字列として)があります。どのくらいの時間が経過したかを見るために、上のものから細胞を引く必要があります。Pythonのxlsxファイルの1つ前のセルから1つの列のセルを引きます。

ex。 COLUMN A

02/23/2017 08:25:39 
02/23/2017 08:55:56 
02/23/2017 08:55:57 
02/23/2017 08:56:12 

これは私が今までに持っているものです.....事前にありがとうございます。

import xlrd 
from datetime import datetime 

def open_file(path): 

    # Open and read an Excel file 

    book = xlrd.open_workbook(path) 

    # get the first worksheet 

    first_sheet = book.sheet_by_index(0) 

    # read first column 

    column_values = first_sheet.col_values(0,0) 
    column_list = [] 

    for i in column_values: 

     i = datetime.strptime(i, '%m/%d/%Y %H:%M:%S') 

     column_list.append(i) 

    print(column_list[1] - column_list[0]) 

if __name__ == "__main__": 
    path = '02-23-2017.xlsx' 
    open_file(path) 
+0

私をprint文は一番下にありますが、何千ものタイムスタンプがありますので、プログラマチックにそれらを通過する方法が必要です。ありがとう – Al123

答えて

0

パンダをチェックアウトすることができます。このような計算はすぐに処理されます。

import pandas as pd 

# create a dictionary of data frames, one for each sheet 
df_dict = pd.read_excel('C:/path/to/file.xlsx', sheets=None, header=None) 

# iterate over each data frame 
for df_key in df_dict: 
    # pull the time data from the first columns 
    t = pd.to_datetime(df_dict[df_key].iloc[:,0]) 
    # calculate the time difference using .diff(1), fillna makes the first cell 0 
    dt = t.diff(1).fillna(0) 
    # assign the difference to a new columns in the data frame 
    df_dict[df_key]['time_delta'] = dt 

# create a writer to make a new excel file 
writer = pd.ExcelWriter('C:/path/to/new_file.xlsx') 
# write each sheet to file 
for name, df in df_dict.items(): 
    df.to_excel(writer, 'sheet{}'.format(name)) 
writer.save() 
0

既存のコードに基づいて、あなたが次のことを行うことができますが:

シートの各々は、同じフォーマットを持っている、これはあなたのような何か与えるだろうと仮定すると、
import xlrd 
from datetime import datetime 

def open_file(path): 

    # Open and read an Excel file 
    book = xlrd.open_workbook(path) 

    # Open each sheet 
    for sheet in book.sheet_names(): 
     current_sheet = book.sheet_by_name(sheet) 

     # Read first column and convert to datetime objects 
     column_values = [datetime.strptime(i, '%m/%d/%Y %H:%M:%S') for i in current_sheet.col_values(0, 0)] 

     # Create a list of timedelta differences 
     cur = column_values[0] 
     differences = [] 

     for i in column_values[1:]: 
      differences.append(i - cur) 
      cur = i 

     print(sheet) 

     for d in differences: 
      print(" {}".format(d)) 

if __name__ == "__main__": 
    path = '02-23-2017.xlsx' 
    open_file(path) 

Sheet1 
    0:30:17 
    0:00:01 
    0:00:15 
Sheet2 
    0:30:17 
    0:00:01 
    0:00:15 
Sheet3 
    0:30:17 
    0:00:01 
    0:00:15 
関連する問題