我有以下CSV文件:
file1.csv #dataframe is named dfFile1
Id,name,pos_neg,line
1,abc,pos,cas
2,cde,neg,work
3,efg,pos,cat
4,abc,pos,job
file2.csv #dataframe is named dfFile2
Id,ref,names,other
c10,n1,www,10.5
c11,m4,efg,5.4
c12,m5,cde,9.8
c13,m9,hhh,6.7
c14,n4,abc,12.5
c15,n9,kkk,3.4
我希望根据dfFile1的name字段中的唯一值获得与dfFile2的行匹配的第三个 Dataframe ,并添加文件1中的pos_neg行,因此我将以以下内容结束:
dfNew
Id,ref,names,other,pos_neg
c11,m4,efg,5.4,pos
c12,m5,cde,9.8,neg
c14,n4,abc,12.5,pos
到目前为止,我已经做了以下工作:
list=[]
list=dfFile1["name"].unique() #contains [abc,cde,efg]
dfFile2=dfFile2[dfFile2.names.isin(list)]
但是,我不知道如何合并dfFile1中的列pos_neg,我尝试了以下方法:
dfNew=dfFile2.merge(dfFile2,dfFil1[["pos_neg"]],on=dfFile2)
不幸的是,它不起作用。
3条答案
按热度按时间laik7k3q1#
你几乎已经做到了,只是对
DataFrame.merge
方法做了一些调整,而且这里你需要drop_duplicates
,因为abc
在dfFile1
中出现了两次。旁注:在Python中,我们不使用
camelCase
作为变量名,而是使用小写加下划线的camel_case
。参见PEP8 style guide
:函数名应小写,必要时用下划线分隔单词,以提高可读性。
qco9c6ql2#
可以使用迭代行迭代 Dataframe
row.loc[0]代表具有相同'name'字段的行。获取第一个同名行
djmepvbi3#
试试看:
如果上面的方法有效,重新排列列和/或重命名列应该不难。