使用python更新库存csv文件
我有一个csv格式的库存文件,如下所示:使用python更新库存csv文件,python,pandas,csv,python-3.6,Python,Pandas,Csv,Python 3.6,我有一个csv格式的库存文件,如下所示: sku nome prezzo qty codice 1 uno 10 1 11111 2 due 10 1 22222 3 tre 10 1 33333 4 quattro 10 1 44444 5 cinque 10 1 55555 10 dieci 10 1 101010 sku nome pre
sku nome prezzo qty codice
1 uno 10 1 11111
2 due 10 1 22222
3 tre 10 1 33333
4 quattro 10 1 44444
5 cinque 10 1 55555
10 dieci 10 1 101010
sku nome prezzo qty codice
1 uno 20 2 11111
2 due 20 2 22222
3 tre 20 2 33333
5 cinque 20 2 55555
10 dieci 20 2 101010
11 undici 20 2 111111
唯一可用作键的列是“sku”。
该文件是更新添加新sku、更新现有sku和删除库存中不再存在的sku,如下所示:
sku nome prezzo qty codice
1 uno 10 1 11111
2 due 10 1 22222
3 tre 10 1 33333
4 quattro 10 1 44444
5 cinque 10 1 55555
10 dieci 10 1 101010
sku nome prezzo qty codice
1 uno 20 2 11111
2 due 20 2 22222
3 tre 20 2 33333
5 cinque 20 2 55555
10 dieci 20 2 101010
11 undici 20 2 111111
我是python新手,但使用pandas模块和2或3行代码,我进行了外部合并:
import pandas as pd
a = pd.read_csv("./old.csv")
b = pd.read_csv("./new.csv")
c = pd.merge(a, b, on = 'sku', how = 'outer', indicator = True)
c.to_csv("./updated.csv", index=False)
结果是正确的:
sku nome_x prezzo_x qty_x codice _x nome_y prezzo_y qty_y codice _y _merge
1 uno 10 1 11111 uno 20 2 11111 both
2 due 10 1 22222 due 20 2 22222 both
3 tre 10 1 33333 tre 20 2 33333 both
4 quattro 10 1 44444 left_only
5 cinque 10 1 55555 cinque 20 2 55555 both
10 dieci 10 1 101010 dieci 20 2 101010 both
11 undici 20 2 111111 right_only
但这不是一个有用的csv。。。
我希望我能做到:
sku nome prezzo qty codice
1 uno 20 2 11111
2 due 20 2 22222
3 tre 20 2 33333
4 quattro 0 0 44444
5 cinque 20 2 55555
10 dieci 20 2 101010
11 undici 20 2 111111
IIUC:
我还没有试过你的代码,但是prezzo和qty不正确。最后一张唱片是谢谢你的兴趣!我必须仔细阅读你的代码才能理解它,但看起来写得很好。一件事:如何去除浮点数和密码?我将把来源解读为str?并且(这是至关重要的)4是一个缺货项目,因此价格和数量必须设置为0,而不是使用旧信息r[['prezzo','qty','codice']]=r[['prezzo','qty','codice']]。astype(int)给我keyrerror:“['codice']不在索引中”错误。@twindad如果错误对您来说不够明显,请检查您的列名?