我有两个结构相同且行数相同的python数据帧 当我对他们执行“==”操作时,他们会给出错误的答案
DF1:
0 61561899
1 56598947
2 52231204
3 10069030
4 19900179
5 52892001
6 50015534
7 10071207
8 55455545
9 10075649
10 52050196
Name: spn, dtype: object
DF2:
0 61561899
1 56598947
2 52231204
3 10069030
4 19900179
5 52892001
6 50015534
7 10071207
8 55455545
9 10075649
10 52050196
Name: spn, dtype: object
print df1 == df2
上面的python语句给出了以下输出:
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
Name: spn, dtype: bool
我不知道我错过了什么。我期待一切都是真的。
答案 0 :(得分:2)
您还可以使用equals比较两个数据帧。访问http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.equals.html
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df2 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df1.equals(df2)
output:
df1.equals(df2)
Out[70]: True
如果两个数据帧相等,它将为您提供True布尔值
另外,你可以使用isin。它返回数据帧的布尔值。 例如:
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df2 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df1.isin(df2)
output:
df1.isin(df2)
Out[68]:
A B
0 True True
1 True True
2 True True
访问http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isin.html
答案 1 :(得分:1)
尝试转换为str
,然后比较:
df1.spn.astype(str) == df2.spn.astype(str)
或者可能只需要比较列:
df1.spn == df2.spn
答案 2 :(得分:0)
由于比较结果为True值,因此希望查看您的代码。这是一个使用您的数据的示例。
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
print (df)
A B C D E F
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 4 b
df1 = df.select_dtypes(np.number).idxmax()
print (df1)
B 1
C 2
D 3
E 3
dtype: int64