鱼C论坛

 找回密码
 立即注册
查看: 1027|回复: 16

[已解决]数据做表格

[复制链接]
发表于 2018-3-18 18:47:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
文档中数据是:
A列        B列        次数
23        12        2
23        11        1
13        3        3
22        22        4
23        15        5
14        21        1
42        21        3
.......

做成一个二维表格:
        3        11        12        15        21        22
13        3
14                                        1
22                                                4
23                1        2        5
42                                        3

输出文档并保存,怎么用代码实现(C和Python都行),求助大家!
          
最佳答案
2018-3-18 19:41:51
我写了一个,写的比较乱,如果有不明白的,再提问。
  1. data = '''23        12        2
  2. 23        11        1
  3. 13        3        3
  4. 22        22        4
  5. 23        15        5
  6. 14        21        1
  7. 42        21        3'''
  8. data1 = [i.split() for i in data.split('\n')]
  9. data2 = list(zip(*data1))
  10. a = list(set(data2[0]))
  11. a.sort(key = lambda x: int(x))
  12. b = list(set(data2[1]))
  13. b.sort(key = lambda x: int(x))
  14. newdata = [['' for i in range(len(b) + 1)] for j in range(len(a) + 1)]
  15. for i, each in enumerate(a):
  16.     newdata[i + 1][0] = each
  17. for j, each in enumerate(b):
  18.     newdata[0][j + 1] = each
  19. for each in data1:
  20. ##    print(a.index(each[0]))
  21. ##    input()
  22.     newdata[a.index(each[0]) + 1][b.index(each[1]) + 1] = each[2]
  23. print('\n'.join(['\t'.join(i) for i in newdata]))
复制代码

  1.         3        11        12        15        21        22
  2. 13        3                                       
  3. 14                                        1       
  4. 22                                                4
  5. 23                1        2        5               
  6. 42                                        3       
复制代码

没有写保存为文件,这个应该很容易。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-18 18:59:28 From FishC Mobile | 显示全部楼层
此题不难,手机不方便,明天电脑写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-18 19:36:28 | 显示全部楼层
shigure_takimi 发表于 2018-3-18 18:59
此题不难,手机不方便,明天电脑写。

谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 19:41:51 | 显示全部楼层    本楼为最佳答案   
我写了一个,写的比较乱,如果有不明白的,再提问。
  1. data = '''23        12        2
  2. 23        11        1
  3. 13        3        3
  4. 22        22        4
  5. 23        15        5
  6. 14        21        1
  7. 42        21        3'''
  8. data1 = [i.split() for i in data.split('\n')]
  9. data2 = list(zip(*data1))
  10. a = list(set(data2[0]))
  11. a.sort(key = lambda x: int(x))
  12. b = list(set(data2[1]))
  13. b.sort(key = lambda x: int(x))
  14. newdata = [['' for i in range(len(b) + 1)] for j in range(len(a) + 1)]
  15. for i, each in enumerate(a):
  16.     newdata[i + 1][0] = each
  17. for j, each in enumerate(b):
  18.     newdata[0][j + 1] = each
  19. for each in data1:
  20. ##    print(a.index(each[0]))
  21. ##    input()
  22.     newdata[a.index(each[0]) + 1][b.index(each[1]) + 1] = each[2]
  23. print('\n'.join(['\t'.join(i) for i in newdata]))
复制代码

  1.         3        11        12        15        21        22
  2. 13        3                                       
  3. 14                                        1       
  4. 22                                                4
  5. 23                1        2        5               
  6. 42                                        3       
复制代码

没有写保存为文件,这个应该很容易。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-18 19:43:24 | 显示全部楼层
帖子里对不齐,实际运行是对齐的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 21:51:04 | 显示全部楼层
没看明白。。。。

等解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-18 22:00:31 | 显示全部楼层
冬雪雪冬 发表于 2018-3-18 19:43
帖子里对不齐,实际运行是对齐的。

不错,谢谢啦,我用小文件可以输入保存,到大容量数据4200条时,出现list index out of range,出现原因在
“”a = list(set (data2[0]))“”,  是不是用zip(*)构建二维数组时索引值少了很多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 22:01:55 | 显示全部楼层
大约在冬季 发表于 2018-3-18 22:00
不错,谢谢啦,我用小文件可以输入保存,到大容量数据4200条时,出现list index out of range,出现原因在 ...

应该不是的,可能是数据文件本身的问题,方便的话,发上来,我再试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-19 09:02:27 | 显示全部楼层
这是原始数据

User ID.rar

55.02 KB, 下载次数: 3

数据

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 09:03:28 | 显示全部楼层
要学习 发表于 2018-3-18 21:51
没看明白。。。。

等解答

你可以把代码跑一遍试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 14:56:17 | 显示全部楼层
冬雪雪冬 发表于 2018-3-18 22:01
应该不是的,可能是数据文件本身的问题,方便的话,发上来,我再试试。

版主大大,文档上传了,有时间帮我解决一下,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 20:50:35 | 显示全部楼层
shigure_takimi 发表于 2018-3-18 18:59
此题不难,手机不方便,明天电脑写。

朋友 ,有时间帮帮忙,万分感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-19 21:09:08 From FishC Mobile | 显示全部楼层
还是有请版主大人吧。数据少了正确,多了我得代码搞不定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-19 21:39:06 | 显示全部楼层
shigure_takimi 发表于 2018-3-19 21:09
还是有请版主大人吧。数据少了正确,多了我得代码搞不定。

好的,多谢啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-20 13:37:58 | 显示全部楼层

我刚刚看到帖子,晚上回去试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-20 21:14:40 | 显示全部楼层
大约在冬季 发表于 2018-3-18 22:00
不错,谢谢啦,我用小文件可以输入保存,到大容量数据4200条时,出现list index out of range,出现原因在 ...

我测试了,没有问题,你再看看。
  1. f = open('User ID.txt')
  2. data1 = [i.split() for i in f]
  3. f.close()
  4. data2 = list(zip(*data1))
  5. a = list(set(data2[0]))
  6. a.sort(key = lambda x: int(x))
  7. b = list(set(data2[1]))
  8. b.sort(key = lambda x: int(x))
  9. newdata = [['' for i in range(len(b) + 1)] for j in range(len(a) + 1)]
  10. for i, each in enumerate(a):
  11.     newdata[i + 1][0] = each
  12. for j, each in enumerate(b):
  13.     newdata[0][j + 1] = each
  14. for each in data1:
  15.     newdata[a.index(each[0]) + 1][b.index(each[1]) + 1] = each[2]
  16. f = open('output.txt', 'w')
  17. for i in newdata:
  18.     f.write('\t'.join(i) + '\n')
  19. f.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-3-21 11:36:35 | 显示全部楼层
冬雪雪冬 发表于 2018-3-20 21:14
我测试了,没有问题,你再看看。

好的,谢谢版主大大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 08:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表