比较pandas中数据帧中的条目

2024-10-04 09:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个相同的数据帧,我们可以用它作为例子

import pandas as pd
import numpy as np

data = {'name': ['Sheldon', 'Penny', 'Amy', 'Penny', 'Raj', 'Sheldon'],
                'episodes': [42, 24, 31, 29, 37, 40],
                'gender': ['male', 'female', 'female', 'female', 'male', 'male']}
data1 = {'name': ['Sheldon', 'Penny', 'Amy', 'Penny', 'Raj', 'Sheldon'],
                'episodes': [12, 32, 31, 32, 37, 40],
                'gender': ['male', 'female', 'female', 'female', 'male', 'male']}    

df1 = pd.DataFrame(data1, columns = ['name','episodes', 'gender'])    
df = pd.DataFrame(data, columns = ['name','episodes', 'gender'])
for names in df['name']:
    if (df[df['name'].str.contains(f'{names}')]['episodes']).any() == (df1[df1['name'].str.contains(f'{names}')]['episodes']).any():
        print('True')
        
    else:
        print('False')

它正在检查两个数据帧之间的剧集数量是否不同,并应在不同剧集的地方打印false。但是我得到了所有的True

True
True
True
True
True
True

为什么它不打印错误


Tags: 数据nameimporttruedfnamesasgender
3条回答

我们可以试试merge

df.merge(df1,on='name',how='left').eval('episodes_x==episodes_y')

使用set_index然后比较episodes列:

>>> df.set_index('name')['episodes'] == df1.set_index('name')['episodes']
name
Sheldon    False
Penny      False
Amy         True
Penny      False
Raj         True
Sheldon     True
Name: episodes, dtype: bool

您可以使用.eq()方法:

print(df.episodes.eq(df1.episodes))

0    False
1    False
2     True
3    False
4     True
5     True
Name: episodes, dtype: bool

相关问题 更多 >