- 碰到个小问题, 因为需要更改excel 的行为。
处理最多的还是excel的事, 不过看起来是excel。实际上对pandas 的库的熟悉。读取,更改,应用等等,方法。
十分有用。
先说需求,本来的表格形式为:
需要变成:
网上找了篇链接,移动非空单元格的。
思路:
1 把所有零都变成null 值
2 套用文章中的函数
最后完美达成。
写习惯了。其实,这个很简单,不用分这么细。 不过编程思维,将模块分解,成一个小单元去组合。
尽量细分到了每个模块做什么事,合起来。
一个函数内部精密度高,可塑性强。但是可以到处复用。
算法明显就是如此。
低耦合,高内聚。
# _*_coding:utf-8 _*_ import pandas as pd import numpy as np class baixi: # 初始化 def __init__(self): self.pd = pd self.deal_data = pd.read_excel(r'C:\Users\daojia\Desktop\学习\work\Sample.xlsx', sheet_name='CQL') # 转置过程,将null 值全部删除,重建。很值得学习 @staticmethod def squeeze_nan(x): original_columns = x.index.tolist() squeezed = x.dropna() squeezed.index = [original_columns[n] for n in range(squeezed.count())] return squeezed.reindex(original_columns, fill_value=np.nan) # 重新获取数据 def get_lc_data(self): # 获取数据 data = self.deal_data data[data.__eq__(0)] = np.nan # 调用函数左移数据 out_data = data.apply(self.squeeze_nan, axis=1) # 保存数据 print(data) out_data.to_excel(r'C:\Users\daojia\Desktop\学习\Sample123.xlsx') # return out_data if __name__ == '__main__': baixi().get_lc_data() a = 1