我有兩個數據框,我想比較它們,然後並排顯示差異。我一直在使用從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