施华蔻洗发水 发表于 2022-11-17 19:41:53

如何[u]使用python将excel中每行的数据按照要求重新排列?

本帖最后由 施华蔻洗发水 于 2022-11-18 16:22 编辑

具体问题如下:
给出excel表(1):



使用python将表中数据按照整数部分大小排列,且要保证整数部分相同的数据在同一列

排列后的成果表截图如下:




注:实际数据量几万条,不可能excel一个一个的点,需要python完成自动化排序。

zhangjinxuan 发表于 2022-11-17 19:58:42

我excel不是很会,排序会点,你应该会excel吧

施华蔻洗发水 发表于 2022-11-17 20:42:11

zhangjinxuan 发表于 2022-11-17 19:58
我excel不是很会,排序会点,你应该会excel吧

数据量很大,不能一个一个的点,需要python完成自动化

zhangjinxuan 发表于 2022-11-17 20:44:25

施华蔻洗发水 发表于 2022-11-17 20:42
数据量很大,不能一个一个的点,需要python完成自动化
不过Python内置的排序时间也不高啊

zhangjinxuan 发表于 2022-11-17 20:46:04

我不太会excel,没有学过,不过排序会一点,要不我就写排序的函数吧

今天有点晚了,明天再来吧

阿奇_o 发表于 2022-11-17 20:59:17

本帖最后由 阿奇_o 于 2022-11-17 21:03 编辑

假设你会点Pandas和Numpy,可以这样(也就十来行代码^_):

import pandas as pd, numpy as np
data = {'a': , 'b':, 'c':}    # 测试数据(实际可以用pd.read_excel()读取xlsx文件)
df = pd.DataFrame(data)
df
      a   b      c
01.202.10   3.03
12.017.0110.29
23.063.06   5.11
r = range(int(df.min().min()), int(df.max().max())+1)
res_data = {f'{i}': np.sort(df[(df>=i) & (df<i+1)].to_numpy().flatten()) for i in r}
res = pd.DataFrame(res_data)
res
   1   2   3   4   5   6   7   8   9   10
01.22.013.03 NaN5.11 NaN7.01 NaN NaN10.29
1NaN2.103.06 NaN   NaN NaN   NaN NaN NaN    NaN
2NaN   NaN3.06 NaN   NaN NaN   NaN NaN NaN    NaN
3NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
4NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
5NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
6NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
7NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN
8NaN   NaN   NaN NaN   NaN NaN   NaN NaN NaN    NaN

res.to_excel('处理结果.xlsx', index=False)

gywjj 发表于 2022-11-17 21:07:01

你结果表E列和F列数据如果要那样排的话,是很不好搞啊。你那依据是什么呢?

cflying 发表于 2022-11-17 21:09:58

本帖最后由 cflying 于 2022-11-17 21:26 编辑

除了pandas,用excel的库也可以实现,逐行读取为list,然后循环判断该元素整数位,然后根据结果插入到临时list中(按位),缺失的为空,然后逐行重新写入excel即可。
其实用openpyxl也就是几行代码的事情,例如sheet[行号]就可以读取整行,然后循环读出value再判断整数,然后用sheet.append写入,例如sheet.append()也就整行写入了

lxping 发表于 2022-11-17 22:01:11

学习下~

xiaosi4081 发表于 2022-11-17 22:18:26

嘶.....你这确实不好搞

white_slacker 发表于 2022-11-18 10:41:03

前排学习{:10_256:}

Mefine 发表于 2022-11-18 12:10:12

前排学习{:10_256:}
页: [1]
查看完整版本: 如何[u]使用python将excel中每行的数据按照要求重新排列?