我正在尝试使用来自一个数据帧的键合并两个数据帧。输入文件是.csv文件,我希望我的输出文件也是.csv文件。
我的两个输入文件如下:
DF1:
Org1 Org2
OTU_1 OTU_2
OTU_1 OTU 3
OTU_1 OTU_4
OTU_2 OTU_4
DF2:
Org1 Interaction Ratio
OTU_1 TRUE 0.5
OTU_2 FALSE 0.1
我希望我的输出文件看起来像这样:
Org1 Org2 Interaction Ratio
OTU_1 OTU_2 TRUE 0.5
OTU_1 OTU_3 TRUE 0.5
OTU_1 OTU_4 TRUE 0.5
OTU_2 OTU_4 FALSE 0.1
我已经执行以下操作:
import sys
import pandas as pd
import io
from io import StringIO
DF1=pd.read_csv(io.StringIO(sys.argv[1].decode()),sep="[;,]",engine="python")
DF2=pd.read_csv(io.StringIO(sys.argv[2].decode()),sep="[;,]",engine="python")
merged=pd.merge(DF1,DF2,how="left",on="Org1")
df.to_csv(merged,sep='\t')
我收到以下错误:
KeyError:'Org1'
将非常感谢获得修复所需信息的信息。
答案 0 :(得分:0)
谢谢大家的帮助,我能够在您的评论指导下解决此问题。
真正的错误是我需要在pd.read_csv()命令中指定dtype = str。没有这个,python无法读取我的键,因为它无法正确读取我的输入文件。我尝试编写csv文件的方式也出现了错误,因此总的来说,该代码在多个级别上均无法正常工作。
发布以下符合预期目的的代码。
import sys
import pandas as pd
import io
from io import StringIO
DF1=pd.read_csv(sys.argv[1],dtype=str)
DF2=pd.read_csv(sys.argv[2],dtype=str)
Org=sys.argv[3]
merged=pd.merge(DF1,DF2,how="left",on=Org)
mergeddf=pd.DataFrame(merged)
mergeddf.to_csv(sys.argv[4],sep=";",encoding="utf-8")