用python更新库存csv文件

2024-06-25 06:49:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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”。 文件是update adding new sku,update existings and deleting sku that are no more in stock,like this:文件正在更新添加新sku,更新现有库存并删除库存中不再存在的sku,如下所示:

^{pr2}$

我是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

Tags: 文件csv库存unoduepdtreqty
1条回答
网友
1楼 · 发布于 2024-06-25 06:49:36

IIUC:

In [52]: r = b.set_index('sku') \
    ...:       .reindex(pd.Index(a['sku']).union(pd.Index(b['sku']))) \
    ...:       .combine_first(a.set_index('sku').assign(qty=0, prezzo=0)) \
    ...:       .reset_index()
    ...:

In [53]: r[['prezzo','qty','codice']] = r[['prezzo','qty','codice']].astype(int)

In [54]: r
Out[54]:
   sku     nome  prezzo  qty  codice
0    1      uno      20    2   11111
1    2      due      20    2   22222
2    3      tre      20    2   33333
3    4  quattro       0    0   44444
4    5   cinque      20    2   55555
5   10    dieci      20    2  101010
6   11   undici      20    2  111111

相关问题 更多 >