Использование лямбды или применение к нескольким столбцам информационного кадра со списком содержимого - PullRequest
0 голосов
/ 03 июня 2019

Это может быть тривиальный вопрос. У меня есть следующий фрейм данных, что столбцы содержат списки.

import pandas as pd
df = pd.DataFrame({'time1': [['2000', '2300'], ['1000', '1100']], 'time2': [['2200', '2400'], ['800', '900']]})
print(df)

  time1         time2
0  [2000, 2300]  [2200, 2400]
1  [1000, 1100]    [800, 900]

Значения в списке представляют временные интервалы. Я пытаюсь преобразовать все эти элементы в формат времени.

Я пытаюсь получить что-то вроде этого:

time1         time2
20:00-23:00  22:00-24:00
10:00-11:00  8:00-9:00

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Мы можем определить нашу функцию здесь, чтобы развернуть ваш список и отделить строки разделителем :, а затем применить его к каждому столбцу:

functime = lambda x: '-'.join([t[:-2] + ':' + t[-2:] for t in x])

for col in df.columns:
    df[col] = df[col].apply(functime)

print(df)
         time1        time2
0  20:00-23:00  22:00-24:00
1  10:00-11:00    8:00-9:00

Или

Определить обычную функцию:

def functime2(x):
    val = '-'.join([t[:-2] + ':' + t[-2:] for t in x])

    return val

for col in df.columns:
    df[col] = df[col].apply(functime2)

         time1        time2
0  20:00-23:00  22:00-24:00
1  10:00-11:00    8:00-9:00
0 голосов
/ 03 июня 2019

Это один косвенный способ сделать это, основываясь на этом непринятом ответе. Идея состоит в том, чтобы разбить строку на часы и минуты, а затем соединить их, используя тире - и :

import pandas as pd
df = pd.DataFrame({'time1': [['2000', '2300'], ['1000', '1100']], 
                   'time2': [['2200', '2400'], ['800', '900']]})


def convert_to_minutes(value):
    tim = []
    for val in value:
        hours, minutes = val[0:-2], val[-2:]
        tim.append(hours + ':' + minutes)

    return '-'.join(tim)

df['time1'] = df['time1'].apply(convert_to_minutes)
df['time2'] = df['time2'].apply(convert_to_minutes)

выход

print (df)

         time1        time2
 0  20:00-23:00  22:00-24:00
 1  10:00-11:00    8:00-9:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...