【发布时间】:2020-12-16 13:34:59
【问题描述】:
设df_1 和df_2 为:
In [1]: import pandas as pd
...: df_1 = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
...: df_2 = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
In [2]: df_1
Out[2]:
a b
0 1 4
1 2 5
2 3 6
我们在df_1 中添加一行r:
In [3]: r = pd.DataFrame({'a': ['x'], 'b': ['y']})
...: df_1 = df_1.append(r, ignore_index=True)
In [4]: df_1
Out[4]:
a b
0 1 4
1 2 5
2 3 6
3 x y
我们现在从df_1 中删除添加的行,并重新获得原来的df_1:
In [5]: df_1 = pd.concat([df_1, r]).drop_duplicates(keep=False)
In [6]: df_1
Out[6]:
a b
0 1 4
1 2 5
2 3 6
In [7]: df_2
Out[7]:
a b
0 1 4
1 2 5
2 3 6
虽然df_1 和df_2 相同,但equals() 返回False。
In [8]: df_1.equals(df_2)
Out[8]: False
对 SO 进行了研究,但找不到相关问题。
我做错了吗?在这种情况下如何得到正确的结果?
(df_1==df_2).all().all() 返回True 但不适用于df_1 和df_2 长度不同的情况。
【问题讨论】:
标签: python pandas dataframe equals dtype