熊猫的行程是错误的值

时间:2019-05-20 05:07:21

标签: pandas

我有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。

0 个答案:

没有答案