Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在连接的数据框中搜索精确匹配,然后提取最小日期_Python_Pandas_Csv_Dataframe_Data Science - Fatal编程技术网

Python 在连接的数据框中搜索精确匹配,然后提取最小日期

Python 在连接的数据框中搜索精确匹配,然后提取最小日期,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中 这就是我所

所以我是熊猫队的新手,在这里打球超过了我的体重。我有两个csv文件:一个是我感兴趣的作者列表(数据框1),第二个文件是出版公司的作者及其出版日期的总列表(数据框2)

我需要使用数据帧1来查看数据帧2中是否有精确的名称匹配。如果有匹配项(可以有多个匹配项),我想选择最短日期。例如:)对于df 1中的Jake Smith,df 2中可能有2个匹配项,我想将最早的发布日期添加到数据帧1中

df

名|姓|

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