Yancy1201 2022-08-13 17:17 采纳率: 100%
浏览 66
已结题

Pandas读取csv数据,写入excel进行库存管理

问题遇到的现象和发生背景

背景:想制作一个有关于库存计算的小程序,目的是读取csv文件中生成的产品的名称,数目(由于生成的csv文件有一定限制条件,所以会有NAN数据产生,进行了数据清晰),然后在excel库存文件中找到相应的产品,并进行库存的减去,后期目的想达到库存量过少会提示信息的方向。
现象:目前已经可以读取CSV文件数据,并且转为了Datafram格式,也读取了Excel文件转为了Datafram格式,由于自己是第一次使用Pandas进行程序编写,所以现在不知道该如何进行读取CSV文件的数据与Excel中的数据进行比对及进行库存计算。
为了练习Pandas,所以本次只想使用Pandas进行编程。
查询了很多网页,还是没有找到自己想要的。

问题相关代码,请勿粘贴截图

data_dao=[]
col=11
for i in range(15):
df= pd.read_csv('刀具出库申请数据.csv',usecols=[col,col+1],encoding='gbk')
dao= pd.DataFrame(df)
dao.columns={"刀具型号","数量"}
data_dao.append(dao)
col += 4
for i in range(14):
data_dao[0] = pd.concat([data_dao[0],data_dao[i+1]])

data_dao[0]=data_dao[0].set_index('刀具型号')
data_dao[0]=data_dao[0].dropna()
data_dao[0].sort_index(inplace=True)
print(data_dao[0],type(data_dao[0]))

df1=pd.read_excel('TOOLSTOCK.xlsx',usecols=[1,2])
df1=df1.set_index('商品名称')
print(df1,type(df1))

data_dao[0]['刀具型号']='a'
data_dao[0]['数量']='b'
df1['商品名称']='c'
df1['盘点数量']='d'

运行结果及报错内容
             数量

刀具型号
GM-2B-R3.0 1
GM-2BP-R0.3-M08 1
GM-2BP-R1-M10 1
GM-2BP-R1-M12 1
GM-2BP-R1.5-M12 1
GM-2BP-R2-M16 1
GM-2EP-D1-M06 1
GM-2EP-D2-M06 2
GM-2EP-D3-M16 1
GM-4E-D12 1
GM-4E-D8 1<class 'pandas.core.frame.DataFrame'>
盘点数量
商品名称
GM-2EP-D0.5-M06 15
GM-2EP-D0.5-M04 18
GM-2EP-D0.5-M08 13
GM-2EP-D0.8-M04 8
GM-2EP-D0.8-M06 20
GM-2BP-R0.4-M04 47
GM-2BP-R1-M08 45
GM-2EP-D2.0-M14 12
GM-2EP-D3-M08 12
GM-2EP-D3-M18 16

[272 rows x 1 columns] <class 'pandas.core.frame.DataFrame'>

我的解答思路和尝试过的方法

解答思路:
想从第一个Datafram中遍历每一行,与后面的excel的Datafram比对,然后进行数据写入
尝试过方法:
尝试了很多方法,总是取不出来值

我想要达到的结果

可以将CSV文件中提出的数据与Excel的数据进行比对,对数量进行减法处理

  • 写回答

2条回答 默认 最新

  • 艾秋 2022-08-14 14:31
    关注
    for index, row in data_dao[0].iterrows():
        刀具型号 = index
        出库数量 = row['数量']
        try:
            盘点数量 = df1.loc[index, '盘点数量']
        except: 
            盘点数量 = 0
    
        if (出库数量 > 盘点数量):
            print(刀具型号, "的库存不足")
        else:
            盘点数量 = 盘点数量 - 出库数量
            print(刀具型号, "出库", 出库数量, " ", "剩余:", 盘点数量)
    

    最后你把盘点数量写回 excel 中,后面的我就不写了,然后你的代码还有一个问题

    dao.columns={"刀具型号","数量"} 这一句不要用花括号,用[],花括号是字典,顺序不保证,有时候会出错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月22日
  • 已采纳回答 8月14日
  • 创建了问题 8月13日

悬赏问题

  • ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
  • ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)
  • ¥15 yolov9的训练时间
  • ¥15 二叉树遍历没有报错但无法正常运行
  • ¥15 在linux系统下vscode运行robocup3d上场球员报错
  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动