zoukankan      html  css  js  c++  java
  • pandas向左移动非空单元格

    • 碰到个小问题, 因为需要更改excel 的行为。 

        处理最多的还是excel的事, 不过看起来是excel。实际上对pandas 的库的熟悉。读取,更改,应用等等,方法。

        十分有用。

    先说需求,本来的表格形式为:

    需要变成:

    网上找了篇链接,移动非空单元格的。

    https://stackoom.com/question/2AWpZ/%E5%9C%A8pandas-DataFrame%E4%B8%AD%E5%B0%86%E9%9D%9E%E7%A9%BA%E5%8D%95%E5%85%83%E6%A0%BC%E7%A7%BB%E5%88%B0%E5%B7%A6%E4%BE%A7

    思路:

       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:UsersdaojiaDesktop学习workSample.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:UsersdaojiaDesktop学习Sample123.xlsx')
    
            # return out_data
    
    
    if __name__ == '__main__':
        baixi().get_lc_data()
        a = 1
  • 相关阅读:
    dup和dup2
    cassandra nodetools
    python 之mechanize
    IDEA使用GsonFormat
    游标应用
    SQL 2005 with(nolock)详解
    SET NOCOUNT ON
    异常处理机制(Begin try Begin Catch)
    FILLFACTOR 作用 sql
    触发器语法
  • 原文地址:https://www.cnblogs.com/sakura3/p/11981133.html
Copyright © 2011-2022 走看看