【发布时间】:2021-09-18 17:11:29
【问题描述】:
我有 2 个相同的数据帧,我们可以以此为例。
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
为什么不打印假?
【问题讨论】:
-
当有重复的名字时,你的预期输出是什么,比如
Sheldon?您是否希望它仅按索引进行比较? -
在你的例子中,df 和 df1 都得到了 dict
data,没有得到data1,你能纠正一下吗? -
any()方法返回一个布尔类型值,对于您的代码,==运算符的两侧总是有一个True值。所以,你总是在输出中得到true。
标签: python python-3.x pandas compare