excel行变列转置,excel2016怎么转置行列
原标题:Excel中行列转换的最简单方法
问题描述
我们在工作中经常会遇到Excel表格的处理。编辑Excel表格时,发现表格中列数过多,行数过少。为了便于打印,您可能需要转换表格的行和列。也许是为了进一步的统计分析,目前的格式不太方便,这个时候也会用到行列转换。
下面这个十字Excel表是很常见的格式,方便填写和查看:
但是如果要做进一步的统计分析,这种格式不方便,需要将行和列转换成如下格式的详细列表:
显然人工操作会很麻烦。如果数据量小,也是可以的。如果数据量很大,就要花很多时间,这是灾难。
我们以此为例来说明几种常见的解决方案。
解决办法
方法1: Excel透视表
Excel可以通过透视表支持行列转换功能,效果如下:
显然,这不是我们想要的格式。Excel数据透视表可以满足简单格式的行列转换,但如果格式稍复杂,转换效果往往不尽如人意。
2.编程语言。
写一个程序来解决它,想法很简单:
加载excel文件,并加载所需的工作表。
读取“账套名称”这一行,转换成字符串数组。
读取“帐户代码”列,并将其转换为字符串数组。
按“账户代码”分组,用“账套名称”数组构造一个表。
根据“账套名称”对应的数据,遍历所有明细值,填入对应的表格中。
这样,就可以构建相应的时间表。
如果用Java实现,估计代码量不会少于200行。如果需要将结果输出到excel文件中,开发工作量会更多。虽然Excel本身提供了VBA,谁知道麻烦程度,别提了。其他语言呢?传说python有处理行列转换的功能(熊猫包有pivot功能),代码量会比java少很多。让我们来试试:
进口熊猫作为pd
将numpy作为np导入
df=PD . read _ excel( D: excel pandas . xlsx ,0,3)
col=df . columns . values . to list()#获取标题信息
#删除前两列,只留下需要行列转换的列。
Cols.remove(帐户代码)
Cols.remove(帐户详细信息)
#构建一个列表。
框架=[]
对于列中的列:
1=df.pivot _ table (index=[帐户代码,帐户详细信息],values=[col])
1.dfrename (columns={col:数值 },inplace=True)
df1[3]=列
#转换后的数据被附加到帧中。
frames.append(df1)
# concat端到端连接相同字段的表。
result=pd.concat(帧)
Result.rename(columns={3:帐套名称 },inplace=True)
result . to _ excel( d: excel pandas _ n . xlsx ,sheet _ name=帐户详细信息)
效果还不错,确实挺简洁的!这是Python生成的一个excel文件:
但是,有一个小问题。这个excel格式有点特殊。如果你想使用Python的pivot,我们必须将“帐户代码”和“帐户详细信息”移动到与转换列标题相同的行,它将看起来像下面这样。否则,您必须特别注意代码。反正只有一句台词。手工做就行了,比写代码方便多了。
无论如何,python处理这个细节的小“瑕疵”并不影响它的便利性。Python真的名不虚传。虽然它使用了循环,但整个代码看起来只有10行。
能简单点吗?
嘿,嘿,太好了!
方法:编制计算器程序。
让我们看看计算器的代码:
代码非常简单。让我们列出每一步的中间结果:
A1:加载excel文件工作表1,提取指定范围(3行到40行)的数据,其中选项@ t表示第一行的标题。加载数据并生成如下表格:
A2:删除非数据行
A3:更改列名
A4:将第三列的列名连接成一个字符串,并用“,”分隔
A5: Pivot函数转换行列数据,将A4中对应的列数据放入“值”列。
A6:将排序后的数据保存为xlsx文件。
编译器脚本只有六行,所以不存在循环和判断这种东西,也不像Python那样需要先手动转身,让这个看似“乱七八糟”的数据表得到处理。相比之下,Python使用“N”字的列优先转换进行多次循环,而计算器使用行优先的一次性处理。在数据处理上,计算器在细节处理和使用习惯上更专业。而且计算器的开发环境很容易调试,可以看到每个操作步骤的中间结果,方便挑出错误,让开发更方便。在这个常规的数据处理任务中,计算器优于Python。
优势总结
关于这个问题,关于python和计算器的区别,我来说说我自己的经历:
1.多列转换
对于多列多行需要转换组装成“长”列的场景,python需要将每个数据列构造成一个数组,并添加一列记录当前列名,然后添加到一个大列表中,最后合并,去掉标题;在合并的非第一个数组中;
计算器更容易。它只是将需要转换的列聚集在一起。与笨重的python相比,计算器至少可以节省几个脑细胞。
2.名称变更
在python中不能更改要转换的列的名称,比如cols[0]= Tianjin 。这时候python找不到修改前的关键词“哪个朋友挖的坑,别以为我找不到”。欺负大叔的视力,能不能给我破例?
但是对于相应的计算器就很方便了,比如A1.rename(_1:账户代码,_2:账户明细,4%:成都)。
3.标题空值问题
在Python excel中读取转换行的标题时,前两列为空(对应原excel中的“账户编码,账户明细”),然后标题列中的空值就没有了。这个“坑”有点隐蔽。真的没找到,还丢了两个。有点尴尬;
但如果计算器能识别出来,就会自动加上相应的标记_1和_2,这样在处理数据时,就能找到对应的两列。
4.网络格式编程
计算器采用网格A1的格式,自动关联到所在的对象,非常方便,感觉很有特色;Python只能望洋兴叹。返回搜狐查看更多。
责任编辑: