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

25 篇文章 11 订阅

现有一张进货表格,数据如下,需要将商品数量与商品名称拆分,最终实现有多少个商品显示多少行数据。即当商品为“鸡蛋*5”时,需要有5条鸡蛋数据。
在这里插入图片描述

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))

拆分后的数据如下:
在这里插入图片描述

#不同商品拆分后第一次复制
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))

拆分后的数据如下:
在这里插入图片描述

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])

在这里插入图片描述

data_pro=data_pro[['日期',  '商品名称']]

data_pro["商品数量"]=1

在这里插入图片描述

最后将data_pro导出即可。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,pandas是一个常用的数据处理库,可以用于数据的读取、清洗、转换和分析等操作。其中,pandas提供了多种功能和方法来进行数据预处理。 其中,关于数据的重复处理,可以使用DataFrame的duplicated方法来判断各行是否是重复行。这个方法返回一个布尔型Series,表示各行是否是重复行。例如,在一个DataFrame中,可以使用data.duplicated()来查看各行是否是重复行。 此外,在数据预处理中,Python内置的None值也会被当作NA处理。可以使用isnull方法来判断数据中是否存在NA值。例如,在Series中,可以使用string_data.isnull()来判断字符串数据中是否存在NA值。 另外,在处理重复值时,默认情况下,duplicates和drop_duplicates方法会保留第一个出现的值组合。如果想保留最后一个出现的值组合,可以传入take_last=True参数。例如,在一个DataFrame中,可以使用data.drop_duplicates(['k1','k2'],take_last=True)来删除重复值并保留最后一个出现的值组合。 综上所述,以上是关于Pythonpandas库进行数据预处理的一些基本操作和方法。可以根据具体需求使用相应的方法来进行数据清洗和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [利用Python Pandas进行数据预处理-数据清洗](https://blog.csdn.net/YEN_CSDN/article/details/53445616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值