回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我尝试合并两个csv,即更新由旧数据(old.csv)组成的csv,如果新数据(new.csv)的csv中存在新数据(new.csv)。两者的列数(标题)相同,并且可以通过唯一的id进行标识</p>
<p><strong>old.csv</strong></p>
<pre><code>id,description,listing,url,default
2471582,spacex,536,www.spacex.com,0
3257236,alibaba,875,www.alibaba.com,0
3539697,ethihad,344,www.etihad.com,0
2324566,pretzel,188,www.example.com,1
</code></pre>
<p><strong>new.csv</strong></p>
<pre><code>id,description,listing,url,default
2471582,spacex,888,www.spacex.com,0
3539697,ethihad,348,www.etihad.com,0
2324566,pretzel,396,www.pretzelshopexample12345.com,1
</code></pre>
<p><strong>以下是我迄今为止在Python&;熊猫:</strong></p>
<pre><code>import pandas as pd
f1 = pd.read_csv('old.csv', delimiter=',')
f2 = pd.read_csv('new.csv', delimiter=',')
with open('final.csv', 'w', encoding='utf-8', newline='') as out:
pd.merge(f1, f2, on='id', how='left').to_csv(out, sep=',', index=False)
</code></pre>
<p><strong>电流输出:</strong></p>
<pre><code>id,description_x,listing_x,url_x,default_x,description_y,listing_y,url_y,default_y
2471582,spacex,536,www.spacex.com,0,spacex,888.0,www.spacex.com,0.0
3257236,alibaba,875,www.alibaba.com,0,,,,
3539697,ethihad,344,www.etihad.com,0,ethihad,348.0,www.etihad.com,0.0
2324566,pretzel,188,www.example.com,1,pretzel,396.0,www.pretzelshopexample12345.com,1.0
</code></pre>
<p><strong>我正在努力实现的目标:</strong></p>
<pre><code>id,description,listing,url,default
2471582,spacex,888,www.spacex.com,0
3257236,alibaba,875,www.alibaba.com,0
3539697,ethihad,344,www.etihad.com,0
2324566,pretzel,396,www.pretzelshopexample12345.com,1
</code></pre>
<p>因此,我想知道如果<code>new.csv</code>中存在较新的数据,如何使用pandas基于id合并两个csv以替换整行,同时将其余行保留在old.csv中?提前感谢您在这方面的帮助</p>