我有两个数据框,我想比较它们,然后并排显示差异。我一直在使用从this question接受的解决方案,但现在遇到了ne_stacked = (current_df != new_df).stack()
错误。比较两个熊猫数据框的差异
这用于正常工作,但我现在得到的错误是The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
。在查看所有这些选项的文档后,我不确定如何实现它们中的任何一个,并在我的代码中保留相同的功能。
我将如何去取代ne_stacked = (current_df != new_df).stack()
,所以我没有得到模糊性错误?
编辑
Basic代码的要求例如:
d = {'a':[1,2,3],'b':[1,2,3],'c':[1,2,3]}
d2 = {'a':[4,2,3],'b':[1,4,3],'c':[1,2,4]}
df1 = pd.DataFrame(d)
df2 = pd.DataFrame(d2)
print (df1 != df2) //returns true when value in df1 is not equal to df2
a b c
0 True False False
1 False True False
2 False False True
所以!=
表达工作得很好,对于这个简单的数据帧,但不是我使用了更复杂的(如下图)。
df1 = {'CORE': [{'satellite': '2B',
'windowEnd': '2015-218 04:00:00',
'windowStart': '2015-217 20:00:00'}],
'DURATION': [500.0],
'PRIORITY': [5],
'RATE': [u'HIGH_RATE'],
'STATUS': [u'ACTIVE'],
'TASK_ID': [1],
'TYPE': [u'NOMINAL'],
'WINDOW_END': ['2015-218 04:00:00'],
'WINDOW_START': ['2015-217 20:00:00']}
df2 = {'CORE': [{'satellite': '2B',
'windowEnd': '2015-220 04:00:00',
'windowStart': '2015-219 20:00:00'}],
'DURATION': [500.0],
'PRIORITY': [5],
'RATE': [u'HIGH_RATE'],
'STATUS': [u'ACTIVE'],
'TASK_ID': [2],
'TYPE': [u'NOMINAL'],
'WINDOW_END': ['2015-220 04:00:00'],
'WINDOW_START': ['2015-219 20:00:00']}
返回什么'(df1!= df2)'?你可以添加[mcve](http://stackoverflow.com/help/mcve)吗? – jezrael
@jezrael我为'(df1!= df2)' – kdubs
添加了一个基本代码示例嗯,我认为这与你的示例非常吻合。也许在你的数据框中有问题。有可能分享他们吗? – jezrael