python二维表转一维表_【习题】一维表转二维表
今天来看看梁总出的练习题哈
转换成下面的二维表效果图(要求:必须要跟效果表一致)
方法1:
小子大神Python:
import xlrd
import xlwt
s = set()
d = {}
a = 0
rs = 0
cs =0
f = xlwt.Workbook()
st = f.add_sheet(r'newcity',cell_overwrite_ok=True)
wb = xlrd.open_workbook(r'E:\excel\city.xlsm')
sh = wb.sheets()[0]
for i in range(1,sh.nrows):
d[sh.cell_value(i,1) sh.cell_value(i,0)]=sh.cell_value(i,2)
d[sh.cell_value(i,0) sh.cell_value(i,1)]=sh.cell_value(i,2)
s.add(sh.cell_value(i,1))
s.add(sh.cell_value(i,0))
for r in s:
rs = 1
cs =0
for c in s:
cs =1
if r c in d:
st.write(cs,rs,d[r c])
else:
st.write(cs,rs,0)
st.write(rs,0,r)
st.write(0,rs,r)
print(d)
print(s)
f.save(r'E:\\excel\\citys.xls')
方法2:
诗人:
Sub cdsr()
Dim arr, brr(), d As Object, d1 As Object, i&, s, j&
arr = Sheet6.[a1].CurrentRegion
Set d = CreateObject('scripting.dictionary')
Set d1 = CreateObject('scripting.dictionary')
For i = 2 To UBound(arr)
d(arr(i, 1)) = ''
d(arr(i, 2)) = ''
d1(arr(i, 1) & arr(i, 2)) = arr(i, 3)
Next
s = d.keys
ReDim brr(1 To d.Count 1, 1 To d.Count 1)
For i = 2 To UBound(brr)
brr(i, 1) = s(i - 2)
brr(1, i) = s(i - 2)
Next
For i = 2 To UBound(brr)
For j = 2 To UBound(brr, 2)
brr(i, j) = d1(brr(i, 1) & brr(1, j))
If brr(i, j) = '' Then
brr(i, j) = d1(brr(1, j) & brr(i, 1))
End If
Next
Next
Sheet7.Cells.ClearContents
Sheet7.[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub
方法3:
李长老:
Sub lzl()
Dim d, d1, arr, i, a, n%
Set d = CreateObject('scripting.dictionary')
Set d1 = CreateObject('scripting.dictionary')
arr = Range('a2:c' & Cells(Rows.Count, 1).End(3).Row)
For i = 1 To UBound(arr)
d(arr(i, 1)) = ''
d1(arr(i, 1) & '-' & arr(i, 2)) = arr(i, 3)
d1(arr(i, 2) & '-' & arr(i, 1)) = arr(i, 3)
Next
For i = 1 To UBound(arr)
d(arr(i, 2)) = ''
Next
Dim brr(1 To 100, 1 To 100)
n = 1
For Each a In d.keys
n = n 1
brr(n, 1) = a
brr(1, n) = a
Next
For i = 2 To d.Count 1
For n = 2 To d.Count 1
If i = n Then
brr(i, n) = 0
ElseIf d1.Exists(brr(i, 1) & '-' & brr(1, n)) Then
brr(i, n) = d1(brr(i, 1) & '-' & brr(1, n))
ElseIf d1.Exists(brr(1, n) & '-' & brr(i, 1)) Then
brr(i, n) = d1(brr(1, n) & '-' & brr(i, 1))
Else
brr(i, n) = ''
End If
Next
Next
Sheets('Matrix').Range('a1').Resize(d.Count 1, d.Count 1) = brr
End Sub
方法4:
bajifeng:
Sub b() 'bajifeng
Set d = CreateObject('Scripting.Dictionary')
ar = [a2].Resize([a65536].End(3).Row - 1, 3)
For i = 1 To UBound(ar)
d(ar(i, 1)) = ''
Next
For i = 1 To UBound(ar)
d(ar(i, 2)) = ''
Next
n = d.Count
ReDim br(1 To n 1, 1 To n 1)
For i = 1 To n
br(i 1, 1) = d.keys()(i - 1)
br(1, i 1) = d.keys()(i - 1)
Next
For i = 1 To UBound(ar)
For ib = 1 To n 1
For jb = 1 To n 1
If ar(i, 1) & ar(i, 2) = br(ib, 1) & br(1, jb) Then br(ib, jb) = ar(i, 3): GoTo 100
Next
Next
100:
Next
Sheets(3).Cells.Clear
Sheets(3).[a1].Resize(n 1, n 1) = br
End Sub
方法5:
龙神:
Sub transform()
Dim conn As Object
Dim rst As Object
Dim sql As String, i As Long
Set conn = CreateObject('adodb.connection')
Set rst = CreateObject('adodb.recordset')
conn.Open 'dsn=excel files;dbq=' & ThisWorkbook.FullName
Dim sort_array
sort_array = Array('上海', '乌鲁木齐', '兰州', '北京', '南京', '南宁', '南昌', '台北', '合肥', '呼和浩特', '哈尔滨', '天津', '太原', '广州', '成都', '拉萨', '昆明', '杭州', '武汉', '沈阳', '济南', '澳门', '石家庄', '福州', '西宁', '西安', '贵阳', '郑州', '重庆', '银川', '长春', '长沙', '香港')
sql = 'transform sum([Dist (km)]) select [City 2] as ['] from '
sql = sql & ' (select * from [City Distance$] union select [City 2],[City 1],[Dist (km)] from [City Distance$] union all select a,a,0 from (select [City 1] as a from [City Distance$] union select [City 2] from [City Distance$])) u_city '
sql = sql & 'group by [City 2],instr('' & Join(sort_array, ',') & '',[City 2]) '
sql = sql & ' order by instr('' & Join(sort_array, ',') & '',[City 2])'
sql = sql & ' pivot [City 1] in (' & Join(sort_array, ',') & ')'
rst.Open sql, conn, 3, 3
With Sheets('Matrix')
.Cells.Clear
For i = 0 To rst.Fields.Count - 1
.Range('A1').Offset(0, i) = rst.Fields(i).Name
Next
.Range('A2').CopyFromRecordset rst
End With
rst.Close
Set rst = Nothing
conn.Close
Set conn = Nothing
End Sub
方法6:
春心:
Sub Greenhand()
Dim arr, i&, j&, k%
Set d = CreateObject('scripting.dictionary')
arr = Range(Sheets('City Distance').Cells(2, 1), Sheets('City Distance').Cells(2, 3).End(4))
For i = 1 To UBound(arr)
d(arr(i, 1)) = ''
d(arr(i, 2)) = ''
Next
Sheets('Matrix').[A2].Resize(d.Count, 1) = Application.Transpose(d.keys)
Sheets('Matrix').[B1].Resize(1, d.Count) = Application.Transpose(Application.Transpose(d.keys))
For i = 1 To UBound(arr)
For k = 2 To d.Count 1
For j = 2 To d.Count 1
If arr(i, 1) = Sheets('Matrix').Cells(k, 1) And arr(i, 2) = Sheets('Matrix').Cells(1, j) _
Or arr(i, 1) = Sheets('Matrix').Cells(1, j) And arr(i, 2) = Sheets('Matrix').Cells(k, 1) Then
Sheets('Matrix').Cells(k, j) = arr(i, 3)
End If
Next
Next
Next
End Sub
方法7:
随心:
Sub test() '随心
Dim brr()
Sheets('效果表1').UsedRange.ClearContents
Set d = CreateObject('scripting.dictionary')
arr = Range('a1').CurrentRegion
For j = 1 To 2
For i = 2 To UBound(arr)
d(arr(i, j)) = ''
Next
Next
n = 1: m = 1
d_1 = d.keys
For i1 = 0 To UBound(d_1)
n = n 1
ReDim Preserve brr(1 To UBound(d_1) 2, 1 To n)
brr(1, n) = d_1(i1)
For i2 = 0 To UBound(d_1)
m = m 1
brr(m, 1) = d_1(i2)
For i3 = 1 To UBound(arr)
If arr(i3, 1) = d_1(i1) And arr(i3, 2) = d_1(i2) Then
brr(m, n) = arr(i3, 3)
Exit For
ElseIf arr(i3, 1) = d_1(i2) And arr(i3, 2) = d_1(i1) Then
brr(m, n) = arr(i3, 3)
Exit For
Else
brr(m, n) = 0
End If
Next
Next
m = 1
Next
Sheets('效果表1').[a1].Resize(UBound(brr, 2), UBound(brr)) = brr
End Sub
方法8:
随心Python:
import pandas as pd
import collections
import xlwt
newdata=xlwt.Workbook()
sheet2=newdata.add_sheet('sheet1',cell_overwrite_ok=True)
dic_1=collections.OrderedDict()
data=pd.read_excel('E:\\test\\一维.xlsx')
#data1=data[['City 1','City 2','Dist (km)']]
for line in data.index:
dic_1[data.loc[line,'City 1']]=''
dic_1[data.loc[line,'City 2']]=''
dkey=dic_1.keys()
list_1=[]
list_2=[]
list_3=[]
n=0
m=0
for line1 in dkey:
n =1
sheet2.write(n,0,line1)
for line2 in dkey:
m =1
sheet2.write(0,m,line2)
for line in data.index:
if line1==data.loc[line,'City 1'] and line2==data.loc[line,'City 2']:
sheet2.write(n,m,str(data.loc[line,'Dist (km)']))
break
elif line1==data.loc[line,'City 2'] and line2==data.loc[line,'City 1']:
sheet2.write(n, m, str(data.loc[line, 'Dist (km)']))
break
else:
sheet2.write(n,m,0)
m=0
newdata.save('E:\\test\\结果.xls')
python二维表转一维表_【习题】一维表转二维表相关推荐
- 两问表和三问表哪个更少_[三问三解]关于问表和三问表的区别
问表通过按下按掣或滑动螺栓可在需要时进行报时.最复杂的是"三问表",可对小时.刻钟和分钟报时.这一令人惊叹的功能是最难以制造和最具独占性的精密机芯之一. 问表是报时表的衍生品种.1 ...
- mysql 中中间表是什么意思_为什么会有这么多中间表?
中间表的由来 中间表是数据库中专门存放中间计算结果的数据表.报表系统中的中间表是普遍存在的.那么,这些中间表是如何出现的?为什么中间表会越来越多?中间表会给项目组带来什么样的困扰,如何解决这些困扰?这 ...
- 运维工程师主要做什么_弱电工程IT运维工作到底是做什么的?
前言: 大家好,我是薛哥.现在的弱电工程竣工验收完成后,都要进入一个运维阶段,也就是我们所说的质保期,这个质保期期间是由弱电承包商来做的,过了这个质保期以后,企业就会独立承担或者委托企业进行运维工作, ...
- arcgis中如何导出奥维可识别的图_如何将地图及奥维对象导出成图片 | 奥维互动地图浏览器...
将地图导出成图片只能在Windows客户端软件进行,手机版.网页版无此功能:并且需要开通VIP才可以执行此操作,导出的图片像素大小和VIP级别有关,详见表1: 表1 将地图导出成图片的具体操作步骤: ...
- jpa遇到mysql表名大写怎么办_解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题...
一般实体类中的属性, 如contentType会被hibernate默认映射为content_type,如果数据库中的字段是contenttype则会不匹配 这个问题有2种解决方法: 我的报错是: j ...
- java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键
文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hib ...
- mysql语言中修改表结构的命令_在T-SQL语言中,修改表结构时,应使用的命令是( )...
Funk音乐流行于上世纪70年代至80年代,语言中应使用由于和别的音乐融合,在发展演变中其速度及音乐构成上,有了一些混血的变化 形体与舞蹈与( )有机地结合起来,改表可以将美形象化.具体化 屈膝侧举时 ...
- 数据库单表数据过亿_我也能写数据库 —— 单表查询
前言 说不定期更新,就不定期更新:). 在翻译关系代数这篇文档的时候,总有一种惴惴不安的感觉伴随着我,其实还是对之前概览的一知半解,而DEMO项目Calcite-example-CSV为了介绍特性,添 ...
- 如何创建二维数组 微信小程序_微信小程序遍历二维数组
在微信小程序中遍历二维数组,代码如下 data 中二维数组结构如下 data: { familys:[ { familyName:'贾家', users: [ {name:'贾宝玉'}, {name: ...
- mysql导出七张表成dtf文件_如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?...
展开全部 java 读excel 还是比较方便简单的,原理就是,先用java 读取excel,然后,一行行的写入数据库,字段的话32313133353236313431303231363533e4b8 ...
最新文章
- 解决上传文件或图片时选择相同文件无法触发change事件的问题
- Cortex-M3基本知识点(手册)
- Eureka和Zookeeper注册中心的区别
- flutter Radio 单选框
- .Net中委托的协变和逆变详解
- windows系统 ping Telnet等系统自带命令无法使用原因及解决方法
- Launcher启动的流程图【AndroidICS4.0——Launcher系列四】
- iOS 6分享列表——UIActivityViewController详解
- 数字电路与逻辑设计之集成触发器
- Python 音频文件批量切割
- Ubuntu 20.04 更换阿里源
- Ubuntu20.04Server双网卡问题
- Qt程序退出QThread: Destroyed while thread is still running问题
- css实现烟雾效果(css制作汽车尾气排放效果)
- mysql 禁用日志_MYSQL禁用生成日志文件mysql
- Mac中Caps Lock(大写锁定键)为Control键(Emacs解放小拇指.)
- [Redis] Redis实战
- Comparable与Comparator的再学习与思考
- Pycharm 快捷键 整理
- 计算机专业课考研试卷谁出卷,考研试卷谁来改?揭开考研阅卷流程内幕
热门文章
- 首台android手机号码,国内首批手机Android 12尝鲜列表已公布,华为与荣耀不在名单之上...
- 语音合成:transformer tts 论文复现以及dockerfile
- 云南省依托大数据管理平台反映扶贫工作 实现精准监督常态化
- 2016 China CADCG 参会总结 -- day1
- 原创轻量VIO算法、简单易上手——XRSLAM帮你快速搭建移动平台AR应用
- 更干净的PC电源,还能净化空气,艾湃电竞AP-550Ti电源上手
- 吴恩达:22张图全解深度学习知识!
- php rsa 跨平台问题,为啥 rsa 这种算法扩展 php/python 不自带。而且跨平台也不是处理的很好...
- 用C语言写一个图书管理系统大作业
- 心形线方程-Geek献给女友的爱意情人节