Итерация Python по каждой строке таблицы - PullRequest
1 голос
/ 23 октября 2019

У меня есть датафрейм, подобный следующему:

enter image description here

Я написал функцию, которая разбивала бы каждую метку времени и вычисляла количество минут между Downи до времени. Я не смог заставить это повторяться для каждой строки.

data1 = str(list(data['Adjusted_Down']))
data2 = str(list(data['Adjusted_Up']))
breakdown(data1, data2)

Код для справки:

import pandas as pd

data = pd.read_excel('E:\Savers\Python\Python3 - Master\lab.xlsx')

def breakdown(x, y):
    string1 = x.split()
    variable1 = string1[0]
    dateVariable = variable1.split('-')
    variable2 = string1[1]
    dateVariable2 = variable2.split(':')
    hour = int(dateVariable2[0])
    minute = int(dateVariable2[1])
    seconds = int(dateVariable2[2])

    string1B = y.split()
    variable1B = string1B[0]
    dateVariableB = variable1B.split('-')
    variable2B = string1B[1]
    dateVariable2B = variable2B.split(':')
    hourB = int(dateVariable2B[0])
    minuteB = int(dateVariable2B[1])
    secondsB = int(dateVariable2B[2])

    if hourB > hour:
        sumMinutes = (hourB - hour)*60
        sumMinutes = sumMinutes + (minuteB - minute)
        print(sumMinutes)
    elif hourB == hour:
        sumMinutes = (minuteB - minute)
        print(sumMinutes)

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Ваш вопрос не очень понятен, но если вам интересно, как получить дельту времени, я бы посоветовал, чтобы при чтении таблицы вы использовали параметр parse_dates .

data = pd.read_excel('E:\Savers\Python\Python3 - Master\lab.xlsx', parse_dates=['Adjusted_Down', 'Adjusted_Up'])

В этот момент вы можете просто вычесть 2 столбца и затем преобразовать в желаемую единицу.

1 голос
/ 23 октября 2019

Сначала загрузите столбцы как datetime, как упомянуто выше @samuel, гораздо быстрее загрузить файл следующим образом.

data = pd.read_excel('E:\Savers\Python\Python3 - Master\lab.xlsx', parse_dates=['Adjusted_Down', 'Adjusted_Up'])
#Then you can calculate the timedelta as easy as
data['timedelta-minutes'] = data.Adjusted_Up - data.Adjusted_Down

#convert to minutes
data['timedelta-minutes']  = data['timedelta-minutes'].dt.minute
1 голос
/ 23 октября 2019

Я предполагаю, что вы хотели запустить функцию breakdown () для каждой строки в данных df

for index, row in data.iterrows():
    data1 = str(row['Adjusted_Down'])
    data2 = str(row['Adjusted_Up'])
    breakdown(data1, data2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...