首页 > 其他 > 详细

Pandas 实现 Excel 多列 转 多行

时间:2020-05-08 00:29:52      阅读:191      评论:0      收藏:0      [点我收藏+]

也是最近的一个需求, 将一个 Excel 表, 多列转多行, 就把那种行的, 业务人员经常搞的那种垃圾表,给它转为咱熟悉的数据库表的形式, 多列转多行. 还要帮他们处理数据, 恶心得一批, 其实也不一定非要用什么 Pandas , 就循环遍历二维数据而已, 可能是, Pandas 比较很好, 就总是会将它作为我的第一选择, 事实证明, 它确实无敌强, 理论上能处理任何数据的骚操作.

需求

技术分享图片

方案

  • 读取数据为一个数据, 用 Pandas 来读, iloc 来索引值, 根据下标
  • 两个 for 循环, 分别代表两个方向 (垂直 和 水平) 谁先谁后, 无所谓的, 结果不变, 只是顺序变了.
  • 假设我们, 外层循环为水平方向, 内层则为 垂直方向. (外层每移动 1 列, 内层则移动 n 行)
  • 最后把所有的结果, 拼接起来, 存为 Excel 即可

实现

这里我用我小伙伴的代码吧, 自己就不写了, 写啥代码, 要什么自行车.. 会搬砖, 收藏, 还有模仿, 这才是代码成功之道

核心代码

df = pd.read_excel(file_path)

cols = df.columns.values

# 需要转置的那部分 DF
row_n = df.shap[0] -1
col_n = df.shap[1] - 4

ret = []  # 大列表来存储所有的

# 外层水平向右1列, 内层垂直向下遍历移多行
for i in range(col_n):
    for j in range(row_n):
        # 索引取值 iloc[行索引,列索引] 即可
        lst = [
            
            # 先取前四列, j+1 是为了跳过第 2 行
            df.iloc[j+1, 0], df.iloc[j+1, 1],
            df.iloc[j+1, 2], df.iloc[j+1, 3],
            
            # 再取当前列的, 前两行, 和 对应的值 (i,j) 共3个字段
            
            
        ]




Pandas 实现 Excel 多列 转 多行

原文:https://www.cnblogs.com/chenjieyouge/p/12846780.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!