Панды: разделить ячейку и добавить данные в другую ячейку - PullRequest
1 голос
/ 14 марта 2019

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

этот код работает для разделения клеток

import pandas as pd

data = pd.read_csv("/root/v-unit/calendar_data.csv")


data["Start"]= data["Start"].str.split("T",n =1, expand = True)
data["End"]= data["End"].str.split("T",n =1, expand = True)

print data
csvOut = "/root/v-unit/test-data.csv"
f=open(csvOut, 'a')
data[:65534].to_csv(f, index=False, header=True)

, поэтому формат даты - 2019-03-04T00: 00: 00. Я разделил столбец на T для времени. Затем я хочу взять отметку времени и добавить ее в другую строку, содержащую задачу, чтобы она отображалась как: какая-то задача 12:00 1:00 в одной ячейке, а затем даты в других ячейках (что они уже делают, когда я запустите приведенный выше код, но отметка времени исчезнет, ​​поэтому я не могу объединить ее)

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Почти так же, как и вы, но когда вы разделяете с помощью раскрытия, он возвращает 2 столбца, поэтому вам также нужно иметь 2 столбца в присваивании (например, data[['StartDate', 'StartTime']] = ...):

data = pd.DataFrame({'Start': ['2019-03-04T00:00:00'],
                     'End':   ['2019-03-04T10:00:00']})

data[['Start', 'StartTime']] = data["Start"].str.split("T", n=1, expand = True)
data[['End', 'EndTime']] = data["End"].str.split("T", n=1, expand = True)

print(data)

Вывод:

        Start         End StartTime   EndTime
0  2019-03-04  2019-03-04  00:00:00  10:00:00

Примечание: если вы просто хотите добавить время начала и окончания к имени вашей задачи, вам даже не нужно разделять даты.Вместо этого вы можете преобразовать их с помощью pd.to_datetime, а затем отформатировать с помощью strftime как '%H:%M' (для hours:minutes):

data = pd.DataFrame({'Task': 'task 1',
                     'Start': ['2019-03-04T00:00:00'],
                     'End':   ['2019-03-04T10:00:00']})

data['Task'] += ' ' + \
    pd.to_datetime(data['Start']).dt.strftime('%H:%M').astype(str) + ' ' + \
    pd.to_datetime(data['End']).dt.strftime('%H:%M').astype(str)

print(data)

Вывод:

                 Task                Start                  End
0  task 1 00:00 10:00  2019-03-04T00:00:00  2019-03-04T10:00:00
1 голос
/ 14 марта 2019

Вам нужно выбрать только второй столбец, и вы можете сделать это следующим образом:

import pandas as pd

data = pd.DataFrame({'Start': ['2019-03-04T00:00:00'],
                     'End': ['2019-03-04T01:00:00']})

data['Start'] = data['Start'].str.split('T').str[-1] 
data['End'] = data['End'].str.split('T').str[-1] 

print(data)

>       Start       End
> 0  00:00:00  01:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...