如何使用不同的csv文件覆盖csv文件中的列
我对python非常陌生,而且我完全卡住了!我有两个csv文件,我试图将它们合并为一个csv文件。下面是每个文件的前几行,包括我想要获取的实际输出文件和输出文件。 注意:我意识到文件不完全匹配(即CO_Num不一样),但我只是抓住每个文件的前几行,它们不是按顺序排列的。如何使用不同的csv文件覆盖csv文件中的列
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中删除了操作员列。这是成功的,但我需要操作员列处于plat1.csv中的位置,而不是末尾。
基本上,我需要一种方法来加入/合并这两个csv文件,其中plat1.csv中的操作符列被COMPAC.csv文件中的内容覆盖,并且如果没有CO_Num,则该行只是空的在操作员列中(所有其他列保持不变)。
我再次对此非常陌生,或者如果某件事情没有意义,或者如果您有任何问题,请告诉我!
你不应该包括在合并C的空操作符列(包括它意味着双方CO_Num和运营商合并,这意味着没有共享密钥):
merged = c[col for col in c.columns if col != 'Operator'].merge(d, how='left')
感谢您的答复!我尝试了你的建议,但似乎没有奏效。操作员列仍为空,列的顺序现在不同。我需要命令保持它在plat1.csv中的方式,但是我得到了:区域,区块,CO_Num,评论,Complex_ID,区域,纬度,长度,名称,状态,Structure_Num,深度,运算符 – Abby
@Abby操作符列仍然是空的?这很混乱。你可以在你的问题中追加csvs的头部(或者显示这个的一些示例框架)...我不认为它应该是空的,除非没有CO_Num匹配。 –
我回去了,并从每个文件中添加了几行到我的问题。当我试图从上面运行编辑后的代码时,它告诉我“未能运行脚本语法错误 - 无效语法” – Abby
你需要使用Python? – Alan
是的,老板说它必须是蟒蛇。不知道为什么,但我只是按照订单 – Abby