Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python更新库存csv文件_Python_Pandas_Csv_Python 3.6 - Fatal编程技术网

使用python更新库存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

我有一个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    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如果错误对您来说不够明显,请检查您的列名?