免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1948 | 回复: 3
打印 上一主题 下一主题

如何把两行相同姓名和日期的行并成一行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-16 12:23 |只看该作者 |倒序浏览
如何把两行相同姓名和日期的行并成一行。如下变换:

原文件
zhang San,11/1/2012 8:00,
zhang San,11/1/2012 17:00,
li si,           11/1/2012 8:05,
li si,           11/1/2012 17:03,
wang wu,   11/1/2012 9:00,
zhang San,11/2/2012 17:05,
li si,           11/2/2012 8:01,
li si,           11/2/2012 16:59,
wang wu,   11/2/2012 8:00,
wang wu,   11/2/2012 8:05,
wang wu,   11/2/2012 17:04,

新文件
zhang San,11/1/2012 8:00,11/1/2012 17:00
li si,          11/1/2012 8:05,11/1/2012 17:03
wang Wu, 11/1/2012 9:00,miss
zhang San,miss,11/2/2012 17:05
li si,          11/2/2012 8:01,11/2/2012 16:59
wang wu,  11/2/2012 8:00,11/2/2012 17:04

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2012-11-20 18:12 |只看该作者
字典 ?

论坛徽章:
0
3 [报告]
发表于 2012-11-20 22:11 |只看该作者
本帖最后由 nmweizi 于 2012-11-20 22:41 编辑

  1. from pandas import *
  2. df = read_csv('e:/temp/aa.txt',sep=',',header=None,names=['name','rq','rq1'],parse_dates=[1],index_col=None)
  3. df['rq1'] = = df.rq.map(lambda x: x.strftime('%Y-%m-%d'))
  4. gdf = df.groupby(['rq1','name'])
  5. for name,group in gdf:
  6.     print name[1],',',reduce(lambda x, y: str(x)+','+str(y),group.rq,'')
复制代码
li si , 2012-11-01 ,2012-11-01 08:05:00,2012-11-01 17:03:00
wang wu , 2012-11-01 09:00:00
zhang San , 2012-11-01 08:00:00,2012-11-01 17:00:00
li si , 2012-11-02 08:01:00,2012-11-02 16:59:00
wang wu ,2012-11-02 08:00:00,2012-11-02 08:05:00,2012-11-02 17:04:00
zhang San , 2012-11-02 17:05:00

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
4 [报告]
发表于 2012-11-21 09:56 |只看该作者
楼上的够简洁。
给个自己写的。
  1. >>> s = '''zhang San,11/1/2012 8:00,
  2. zhang San,11/1/2012 17:00,
  3. li si,           11/1/2012 8:05,
  4. li si,           11/1/2012 17:03,
  5. wang wu,   11/1/2012 9:00,
  6. zhang San,11/2/2012 17:05,
  7. li si,           11/2/2012 8:01,
  8. li si,           11/2/2012 16:59,
  9. wang wu,   11/2/2012 8:00,
  10. wang wu,   11/2/2012 8:05,
  11. wang wu,   11/2/2012 17:04,'''
  12. >>> s = s.split('\n')
  13. >>> s = [i.split(',')[:-1] for i in s]
  14. >>> s = [[i.strip()+',' for i in j] for j in s]
  15. >>> d={}
  16. >>> for i in s:
  17.         if i[0] in d:
  18.                 d[i[0]].append(i[1])
  19.         else:
  20.                 d[i[0]] = i[-1:]

  21.                
  22. >>> for i in d:
  23.         print(i+''.join(d[i]))

  24.        
  25. li si,11/1/2012 8:05,11/1/2012 17:03,11/2/2012 8:01,11/2/2012 16:59,
  26. wang wu,11/1/2012 9:00,11/2/2012 8:00,11/2/2012 8:05,11/2/2012 17:04,
  27. zhang San,11/1/2012 8:00,11/1/2012 17:00,11/2/2012 17:05,
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP