如何用python将一列数据分为两列?

vx2008 发布于 2016/07/19 13:22
阅读 4K+
收藏 0

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

数据结构如下:

2016-06-15 08:18:02
2016-06-15 09:44:17
2016-06-15 10:47:18
2016-06-15 14:18:01
2016-06-15 17:06:50
2016-06-16 08:26:17
2016-06-16 11:27:08
2016-06-16 17:07:09
2016-06-17 08:19:26
2016-06-17 11:47:07
2016-06-17 12:28:37
2016-06-17 17:12:36
2016-06-18 08:25:08
将其导入后赋值给了变量 Col:

[u'2016-06-15 08:18:02', u'2016-06-15 09:44:17', u'2016-06-15 10:47:18', u'2016-06-15 14:18:01', u'2016-06-15 17:06:50', u'2016-06-16 08:26:17', u'2016-06-16 11:27:08', u'2016-06-16 17:07:09', u'2016-06-17 08:19:26', u'2016-06-17 11:47:07', u'2016-06-17 12:28:37', u'2016-06-17 17:12:36', u'2016-06-18 08:25:08', u'2016-06-18 12:32:54', u'2016-06-18 15:23:12', u'2016-06-18 20:36:52', ...]

现在想将日期和时间分开,分别赋值给date和time两个变量,请问该如何操作?

谢谢!

加载中
1
Ashkandi
Ashkandi
[{'date': c[:10], 'time': c[11:]} for c in Col]




0
vx2008
vx2008

引用来自“Ashkandi”的评论

[{'date': c[:10], 'time': c[11:]} for c in Col]




谢谢回复,这行代码执行完了以后,日期和时间都村到哪里了呢?

我是了一下,调用date,提示没有定义date,请问什么问题?

0
502BadGateway
502BadGateway

引用来自“Ashkandi”的评论

[{'date': c[:10], 'time': c[11:]} for c in Col]




引用来自“vx2008”的评论

谢谢回复,这行代码执行完了以后,日期和时间都村到哪里了呢?

我是了一下,调用date,提示没有定义date,请问什么问题?

回答者已经给你写好了数据结构,列表里存的是字典。你要遍历列表,然后从列表的每个元素里取出来日期和时间。

col = [u'2016-06-15 08:18:02',
 u'2016-06-15 09:44:17',
 u'2016-06-15 10:47:18',
 u'2016-06-15 14:18:01',
 u'2016-06-15 17:06:50',
 u'2016-06-16 08:26:17',
 u'2016-06-16 11:27:08']

col_split = [{'date': c[:10], 'time': c[11:]} for c in col]

print col_split


######output#########
[{'date': u'2016-06-15', 'time': u'08:18:02'}, {'date': u'2016-06-15', 'time': u'09:44:17'}, {'date': u'2016-06-15', 'time': u'10:47:18'}, {'date': u'2016-06-15', 'time': u'14:18:01'}, {'date': u'2016-06-15', 'time': u'17:06:50'}, {'date': u'2016-06-16', 'time': u'08:26:17'}, {'date': u'2016-06-16', 'time': u'11:27:08'}]

for item in col_split:
    print item.get('date')
    print item.get('time')


######output#########
2016-06-15
08:18:02
2016-06-15
09:44:17
2016-06-15
10:47:18
2016-06-15
14:18:01
2016-06-15
17:06:50
2016-06-16
08:26:17
2016-06-16
11:27:08




0
502BadGateway
502BadGateway

引用来自“Ashkandi”的评论

[{'date': c[:10], 'time': c[11:]} for c in Col]




引用来自“vx2008”的评论

谢谢回复,这行代码执行完了以后,日期和时间都村到哪里了呢?

我是了一下,调用date,提示没有定义date,请问什么问题?

引用来自“502BadGateway”的评论

回答者已经给你写好了数据结构,列表里存的是字典。你要遍历列表,然后从列表的每个元素里取出来日期和时间。

col = [u'2016-06-15 08:18:02',
 u'2016-06-15 09:44:17',
 u'2016-06-15 10:47:18',
 u'2016-06-15 14:18:01',
 u'2016-06-15 17:06:50',
 u'2016-06-16 08:26:17',
 u'2016-06-16 11:27:08']

col_split = [{'date': c[:10], 'time': c[11:]} for c in col]

print col_split


######output#########
[{'date': u'2016-06-15', 'time': u'08:18:02'}, {'date': u'2016-06-15', 'time': u'09:44:17'}, {'date': u'2016-06-15', 'time': u'10:47:18'}, {'date': u'2016-06-15', 'time': u'14:18:01'}, {'date': u'2016-06-15', 'time': u'17:06:50'}, {'date': u'2016-06-16', 'time': u'08:26:17'}, {'date': u'2016-06-16', 'time': u'11:27:08'}]

for item in col_split:
    print item.get('date')
    print item.get('time')


######output#########
2016-06-15
08:18:02
2016-06-15
09:44:17
2016-06-15
10:47:18
2016-06-15
14:18:01
2016-06-15
17:06:50
2016-06-16
08:26:17
2016-06-16
11:27:08




另外,你的需求是:  现在想将日期和时间分开,分别赋值给date和time两个变量,请问该如何操作?

你是希望把所有日期拼成列表赋值给date变量,所有时间拼成列表赋值给time变量吗?

def_date = [dt.get('date') for dt in [{'date': c[:10], 'time': c[11:]} for c in col]]

def_time = [dt.get('time') for dt in [{'date': c[:10], 'time': c[11:]} for c in col]]



变量名不建议用date或者time这种容易和python的库名冲突的名字。

print def_date 

print def_time 

如果我没理解错你的需求的话,print上面两个变量,可以得到日期的列表和时间的列表


0
vx2008
vx2008

引用来自“Ashkandi”的评论

[{'date': c[:10], 'time': c[11:]} for c in Col]




引用来自“vx2008”的评论

谢谢回复,这行代码执行完了以后,日期和时间都村到哪里了呢?

我是了一下,调用date,提示没有定义date,请问什么问题?

引用来自“502BadGateway”的评论

回答者已经给你写好了数据结构,列表里存的是字典。你要遍历列表,然后从列表的每个元素里取出来日期和时间。

col = [u'2016-06-15 08:18:02',
 u'2016-06-15 09:44:17',
 u'2016-06-15 10:47:18',
 u'2016-06-15 14:18:01',
 u'2016-06-15 17:06:50',
 u'2016-06-16 08:26:17',
 u'2016-06-16 11:27:08']

col_split = [{'date': c[:10], 'time': c[11:]} for c in col]

print col_split


######output#########
[{'date': u'2016-06-15', 'time': u'08:18:02'}, {'date': u'2016-06-15', 'time': u'09:44:17'}, {'date': u'2016-06-15', 'time': u'10:47:18'}, {'date': u'2016-06-15', 'time': u'14:18:01'}, {'date': u'2016-06-15', 'time': u'17:06:50'}, {'date': u'2016-06-16', 'time': u'08:26:17'}, {'date': u'2016-06-16', 'time': u'11:27:08'}]

for item in col_split:
    print item.get('date')
    print item.get('time')


######output#########
2016-06-15
08:18:02
2016-06-15
09:44:17
2016-06-15
10:47:18
2016-06-15
14:18:01
2016-06-15
17:06:50
2016-06-16
08:26:17
2016-06-16
11:27:08




引用来自“502BadGateway”的评论

另外,你的需求是:  现在想将日期和时间分开,分别赋值给date和time两个变量,请问该如何操作?

你是希望把所有日期拼成列表赋值给date变量,所有时间拼成列表赋值给time变量吗?

def_date = [dt.get('date') for dt in [{'date': c[:10], 'time': c[11:]} for c in col]]

def_time = [dt.get('time') for dt in [{'date': c[:10], 'time': c[11:]} for c in col]]



变量名不建议用date或者time这种容易和python的库名冲突的名字。

print def_date 

print def_time 

如果我没理解错你的需求的话,print上面两个变量,可以得到日期的列表和时间的列表


谢谢回复,指导;

不过代码是否直接写成如下,更为简单:

        col_date=[]
        col_time=[]
        for c in col_datetime:
            col_date.append(c[:10])
            col_time.append(c[11:])

502BadGateway
502BadGateway
可以的。我是跟着前面的回复直接写了.. 这种截取只要保证数据源每条都是完全一致的格式 不会多个字符少个字符就都没问题。如果需要冗余的话就用datetime模块加异常去校验就可以了
返回顶部
顶部