Python 在连接的数据框中搜索精确匹配,然后提取最小日期
所以我是熊猫队的新手,在这里打球超过了我的体重。我有两个csv文件:一个是我感兴趣的作者列表(数据框1),第二个文件是出版公司的作者及其出版日期的总列表(数据框2) 我需要使用数据帧1来查看数据帧2中是否有精确的名称匹配。如果有匹配项(可以有多个匹配项),我想选择最短日期。例如:)对于df 1中的Jake Smith,df 2中可能有2个匹配项,我想将最早的发布日期添加到数据帧1中 dfPython 在连接的数据框中搜索精确匹配,然后提取最小日期,python,pandas,csv,dataframe,data-science,Python,Pandas,Csv,Dataframe,Data Science,所以我是熊猫队的新手,在这里打球超过了我的体重。我有两个csv文件:一个是我感兴趣的作者列表(数据框1),第二个文件是出版公司的作者及其出版日期的总列表(数据框2) 我需要使用数据帧1来查看数据帧2中是否有精确的名称匹配。如果有匹配项(可以有多个匹配项),我想选择最短日期。例如:)对于df 1中的Jake Smith,df 2中可能有2个匹配项,我想将最早的发布日期添加到数据帧1中 df 名|姓| df 2 名|姓|出版日期 渴望的 如果作者在df1中,则将最低出版日期添加到df1中 这就是我所
名|姓|
df 2
名|姓|出版日期
渴望的
如果作者在df1中,则将最低出版日期添加到df1中
这就是我所做的。我从csv文件创建了数据帧,并连接了所有作者文件以创建df2。然后我对名字和姓氏进行了内部连接,因为我认为这是命名匹配的最佳方式。我总是出错。然后我用一组人来确定最短的日期
import pandas as pd
files_path= 'C:'
df_1 = pd.read_csv( files_path + '/author_desired.csv', sep="|")
df_merged= pd.read_csv(files_path +'/master_list.csv', sep="|")
df_final= pd.join(df_1, df_merged, on= ['LAST_NAME' , 'FIRST_NAME'], how='inner')
df_final.groupby(['FIRST_NAME', 'LAST_NAME']).max()['FIRST_PUB_DATE']
df_final.to_csv(files_path + "/merged_file.csv")
请帮忙
lis1=[{'FIRST_NAME':'James','Last_Name':'Cameran','City':'NYC'},{'FIRST_NAME':'Samuel','Last_Name':'Smith','City':'London'},{'FIRST_NAME':'Kane','Last_Name':'Win','City':'NYC'}]
lis2=[{'FIRST_NAME':'James','Last_Name':'Cameran','Pub. Year':2011},{'FIRST_NAME':'Kane','Last_Name':'Win','Pub. Year':2010},{'FIRST_NAME':'James','Last_Name':'Cameran','Pub. Year':2018},{'FIRST_NAME':'Kane','Last_Name':'Win','Pub. Year':2014}]
import pandas as pd
df1=pd.DataFrame(lis1)
df2=pd.DataFrame(lis2)
print(df1)
print(df2)
df1['Full_Name']=df1.FIRST_NAME+" "+df1.Last_Name
df2['Full_Name']=df2.FIRST_NAME+" "+df2.Last_Name
merged=pd.merge(df1,df2)[['Full_Name','Pub. Year']]
df1['Pub. Year']=[merged[merged.Full_Name==fullname]['Pub. Year'].min() for fullname in df1.Full_Name]
print(df1)
输出:
City FIRST_NAME Last_Name
0 NYC James Cameran
1 London Samuel Smith
2 NYC Kane Win
FIRST_NAME Last_Name Pub. Year
0 James Cameran 2011
1 Kane Win 2010
2 James Cameran 2018
3 Kane Win 2014
City FIRST_NAME Last_Name Full_Name Pub. Year
0 NYC James Cameran James Cameran 2011.0
1 London Samuel Smith Samuel Smith NaN
2 NYC Kane Win Kane Win 2010.0
你能把你的错误加进去吗?出版日期的格式是什么?你能添加一个数据框的样本吗?或者链接到它?我在“姓氏”上得到了一个关键错误,尽管它是一个专栏:杰克·史密斯纽约,杰米·乔伦敦2:杰克·史密斯2015,杰克·史密斯2014,朱迪·詹姆斯2017