好的,我正在尝试在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,然后在其他单元格中的日期(当我运行上面的代码,但是时间戳消失了,所以我无法合并它)
答案 0 :(得分:2)
几乎与您相同,但是使用expand拆分时,它返回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 :(得分:1)
您只需要选择第二列,就可以像这样高效地进行操作:
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