我有2个数据框,并且我正在使用迭代检查以查找两个数据框中都存在的项目。 代码如下。
import pandas as pd
Df1 = pd.DataFrame({'name': ['Marc', 'Jake', 'Sam', 'Brad'],
'Age': ['24', '25', '35', '27'],
'City': ['Agra', 'Bangalore', 'Calcutta', 'Delhi']})
Df2 = pd.DataFrame({'name': ['Jake', 'John', 'Marc', 'Tony', 'Bob', 'Marc'],
'Age': ['25', '25', '24', '28','29', '39'],
'City': ['Bangalore', 'Chennai', 'Agra', 'Delhi','Pune','zoo']})
age1=[]
age2=[]
for index, row in Df1.iterrows():
if Df2.name.isin([row['name']]).any():
print(Df2.loc[Df2['name']==row['name'],'Age'].values)
print(Df1.loc[Df2['name']==row['name'],'Age'].values)
print(Df1.loc[Df2['name']==row['name']])
该代码适用于值Marc,该值在两个数据帧中都存在,因此将其打印出来。但是,此代码还会显示Sam(Sam仅出现在Df2中),而不是Jake(出现在Df1和Df2中)。
输出是这样的
['24' '39']
['35']
name Age City
2 Sam 35 Calcutta
['25']
['24']
name Age City
0 Marc 24 Agra
为什么要这样投放? IT没有任何意义。将打印Marc在Df2中的年龄(正确),然后打印Sam在DF1中的年龄! 然后在Df1中的行中显示Sam。 然后,我不知道如何理解其余的内容。
而且,为什么Marc被打印为第二张?我认为既然Marc是Df1中的第一个值,那么应该先检查并打印然后再添加Jake。