我有两个库存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
有了reindex union,我可以得到我想要的结果:
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()
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
现在,如果新文件有相同的列+其他旧文件中没有的列,结果是正确的,但我重新排列了列; 如何保持新文件的列结构
(具有新列结构的新文件):
sku nome prezzo qty codice Acolumn Bcolumn
0 1 uno 20 2 11111 kkkk
1 2 due 20 2 22222 qwerty
2 3 tre 20 2 33333 mmmm
3 4 quattro 0 0 44444
4 5 cinque 20 2 55555
5 10 dieci 20 2 101010 ssss
6 11 undici 20 2 111111 1a2b3c4d
或者
sku nome Acolumn prezzo qty codice Bcolumn
0 1 uno kkkkk 20 2 11111
1 2 due 20 2 22222 qwerty
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
选项1
我试图改进你现有的解决方案。您可以再次使用
reindex
+combine_first
+reindex
:选项2
或者,用
replace
+fillna
替换combine_first
:相关问题 更多 >
编程相关推荐