簡體   English   中英

如何使用其他csv文件覆蓋csv文件中的列

[英]How to overwrite a column in a csv file using a different csv file

我是python的新手,我完全被卡住了! 我有兩個要合並為一個csv文件的csv文件。 以下是每個文件的前幾行,包括實際的輸出文件和我想要獲取的輸出文件。 注意:我意識到文件不完全匹配(即CO_Num不相同),但是我只是抓住了每個文件的前幾行,並且它們的順序不正確。

plat1.csv: 
District,Complex_ID,Structure_Num,Area,Block,Name,Long,Latitude,Operator,Status,Comments,CO_Num
4,90100,1,AC, 24, SSMANIFO,  -94.76940277,  26.95505833,,,,     ,      
4,183,1,AC, 25,  A-Hoover Spar,  -94.68872137,  26.93905139,,,,00276, 4825   
4,2008,1,AC, 857, A(Perdido),  -94.89791489,  26.12890071,,,,00689, 7835  


COMPAC.csv:
CO_Num,Operator
03249, LOUISIANA LAND AND EXPLORATION COMPANY LLC     
03267,145 OG HOLDINGS LLC                             
03271,157 OG HOLDINGS LLC             

plat2.csv
 ,90222,1,WR, 469, SS Manifold,  -90.53058044,  26.51964805,,,,     ,      
4,183,1,AC, 25,  A-Hoover Spar,  -94.68872137,  26.93905139,,,,00276, 4825   
4,10500,1,GA, 209, A,    -94.545972,    29.130363,,,,00276,   58 

desired plat2.csv
District,Complex_ID,Structure_Num,Area,Block,Name,Long,Latitude,Operator,Status,Comments,CO_Num
4, 90100,1,AC,24, SSMANIFO,-94.76940277,26.95505833,,,,                                                                
4, 183,1,AC,25,A-Hoover Spar,-94.68872137,26.93905139,EXXON MOBIL CORPORATION,,,00276                    
4,2008,1,AC, 857, A(Perdido),-94.89791489,26.12890071,SHELL OFFSHORE INC.,,,00689

我需要基於CO_Num列加入文件。 我遇到的問題與“操作員”列有關。 在plat1.csv中,該列為空,我需要使用COMPAC.csv文件來填充它。我嘗試使用下面的代碼,但是沒有用。 plat2.csv中的“操作員”字段仍然為空。

import pandas as pd

c=pd.read_csv("c:/platform/plat1.csv")

d=pd.read_csv("c:/platform/COMPAC.csv")

merged=c.merge(d, how='left')

merged.to_csv("c:/platform/plat2.csv", index=False)

我還應該提到,並不是plat1.csv中的每一行都有一個CO_Num。 我認為這可能是問題的一部分,但是當我將plat1.csv和COMPAC.csv分別剪切到一行(顯然匹配CO_Numb)后重新運行時,它仍然無法正常工作。

之后,我嘗試使用剪切后的文件重新運行它,但是我從plat1.csv中刪除了Operator列。 的操作成功,但是我需要將Operator列放在plat1.csv中的位置,而不是最后。

基本上,我需要一種方法來合並/合並這兩個csv文件,其中plat1.csv中的Operator列被COMPAC.csv文件中的內容覆蓋,並且如果沒有CO_Num,則該行在Operator列中只是空的(所有其他列保持不變)。

同樣,我對此很陌生,或者如果沒有任何意義或有任何疑問,請告訴我!

您不應在合並中包括c的空Operator列(包括它意味着同時合並CO_Num和Operator,這意味着沒有共享密鑰):

merged = c[col for col in c.columns if col != 'Operator'].merge(d, how='left')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM