У меня есть 2 df (назовите их bdf и cdf) для сравнения, чтобы убедиться, что их содержимое одинаково.Поэтому я использовал
pd.util.testing.assert_frame_equal(bdf, cdf, check_dtype=False, check_like=True, check_exact=True)
, чтобы сделать сравнение.Однако функция выявила разницу в столбце, которую я не ожидал:
DataFrame.iloc[:, 70] are different
DataFrame.iloc[:, 70] values are different (100.0 %)
[left]: [201801300040150000014217, 201801300040150000014217, 201801300040150000013737, 201801290040150000019605, 201801300040150000076982, 201801300040150000136588, 201801300040150000242399, 201801300040150000293800, 201801300040150000293801, 201801290040150000128792, 201801300040150000367067, 201801300040150000367770, 201801300040150000369255, 201801260040150000097789, 0, 0, 201801290040150000145140, 0, 201801290040150000145184, 201801290040150000145190, 201801290040150000145198, 201801290040150000145206, 201801290040150000145214, 201801290040150000145222, 0, 0, 201801290040150000145245, 201801290040150000145254, 201801290040150000145263, 201801290040150000145271, 201801290040150000145278, 201801290040150000145286, 201801290040150000145297, 201801290040150000145309, 201801290040150000145318, 201801290040150000145327, 201801290040150000149263, 201801290040150000149264, 201801300040150000433569, 201801290040150000156348, 201801290040150000161046, 201801290040150000161050, 201801290040150000165445, 0, 201801290040150000165456, 201801290040150000165472, 0, 0, 201801290040150000165496, 0, 0, 201801290040150000165520, 0, 0, 0, 201801290040150000165556, 0, 201801260040150000129418]
[right]: [201801300040150000014217, 201801300040150000014217, 201801300040150000013737, 201801290040150000019605, 201801300040150000076982, 201801300040150000136588, 201801300040150000242399, 201801300040150000293800, 201801300040150000293801, 201801290040150000128792, 201801300040150000367067, 201801300040150000367770, 201801300040150000369255, 201801260040150000097789, 0, 0, 201801290040150000145140, 0, 201801290040150000145184, 201801290040150000145190, 201801290040150000145198, 201801290040150000145206, 201801290040150000145214, 201801290040150000145222, 0, 0, 201801290040150000145245, 201801290040150000145254, 201801290040150000145263, 201801290040150000145271, 201801290040150000145278, 201801290040150000145286, 201801290040150000145297, 201801290040150000145309, 201801290040150000145318, 201801290040150000145327, 201801290040150000149263, 201801290040150000149264, 201801300040150000433569, 201801290040150000156348, 201801290040150000161046, 201801290040150000161050, 201801290040150000165445, 0, 201801290040150000165456, 201801290040150000165472, 0, 0, 201801290040150000165496, 0, 0, 201801290040150000165520, 0, 0, 0, 201801290040150000165556, 0, 201801260040150000129418]
Визуально они не выглядят иначе.Когда я распечатываю значение и dtype:
print "bdf: {}, type {}".format(bdf['refid'][0], bdf['refid'].dtype)
print "cdf: {}, type {}".format(cdf['refid'][0], cdf['refid'].dtype)
, я получаю:
bdf: 201801300040150000014217, type object
cdf: 201801300040150000014217, type object
Так почему же assert_frame_equal () говорит, что они разные, когда их значения и dtypes являютсятак же?Как наблюдение, в этих двух таблицах более 200 столбцов, и все они также являются dtype = object, но я не получил никаких ошибок сравнения для этих столбцов.