目录
  • pandas数据预处理行数据复制
    • 拆分后的数据
    • 拆分后的数据
  • 总结

    pandas数据预处理行数据复制

    现有一张进货表格,数据如下,需要将商品数量与商品名称拆分,最终实现有多少个商品显示多少行数据。

    即当商品为“鸡蛋*5”时,需要有5条鸡蛋数据。

    Python pandas数据预处理之行数据复制方式

    import pandas as pd
    import numpy as np
    file_path=r"E:\临时\数据预处理.xlsx"
    data=pd.read_excel(file_path)
    
    #首先将不同商品做拆分,间隔符为","
    data10=data.join(data["商品"].str.split(",",expand=True))
    

    拆分后的数据

    如下:

    Python pandas数据预处理之行数据复制方式

    #不同商品拆分后第一次复制
    data20=data10[["日期",0]]
    data20.rename(columns={0:"商品"},inplace=True)
    
    data30=data10[["日期",1]]
    data30.rename(columns={1:"商品"},inplace=True)
    
    data40=data10[["日期",2]]
    data40.rename(columns={2:"商品"},inplace=True)
    
    data_con=pd.concat([data20,data30,data40])
    
    data_con=data_con[data_con["商品"].notna()]
    
    #将商品名称与商品数量拆分
    data_con.reset_index(drop=True,inplace=True)
    data_con=data_con.join(data_con["商品"].str.split("*",expand=True))
    

    拆分后的数据

    如下:

    Python pandas数据预处理之行数据复制方式

    data_con.rename(columns={0:"商品名称",1:"商品数量"},inplace=True)
    data_con["商品数量"]=data_con["商品数量"].astype(int)
    
    #商品名称与数量拆分后第二次复制
    data_pro=pd.DataFrame()
    for i in range(data_con.shape[0]):
        data_temp=pd.DataFrame(np.repeat(pd.DataFrame(data_con.iloc[i]).T.values,data_con.iloc[i]["商品数量"],axis=0))
        data_temp.columns=pd.DataFrame(data_con.iloc[i]).T.columns
        data_pro=pd.concat([data_pro,data_temp])
    

    Python pandas数据预处理之行数据复制方式

    data_pro=data_pro[['日期',  '商品名称']]
    
    data_pro["商品数量"]=1
    

    Python pandas数据预处理之行数据复制方式

    最后将data_pro导出即可。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。