我嘗試了所有的解決方案在這裏: Pandas "Can only compare identically-labeled DataFrame objects" errorPython的大熊貓只有比較相同標記的數據框對象
並沒有爲我工作。這是我得到的。我有兩個數據幀。一種是系統中已經存在的一組財務數據,另一套是可能存在或可能不存在於系統中的一組財務數據。我需要找到差異並添加不存在的東西。
下面是代碼:
import pandas as pd
import numpy as np
from azure.storage.blob import AppendBlobService, PublicAccess, ContentSettings
from io import StringIO
dataUrl = "http://ichart.finance.yahoo.com/table.csv?s=MSFT"
blobUrlBase = "https://pyjobs.blob.core.windows.net/"
data = pd.read_csv(dataUrl)
abs = AppendBlobService(account_name='pyjobs', account_key='***')
abs.create_container("stocks", public_access = PublicAccess.Container)
abs.append_blob_from_text('stocks', 'msft', data[:25].to_csv(index=False))
existing = pd.read_csv(StringIO(abs.get_blob_to_text('stocks', 'msft').content))
ne = (data != existing).any(1)
失敗的代碼是最後一行。我正在閱讀一篇關於確定數據幀之間差異的文章。
我檢查了所有列上的dtypes,它們看起來是相同的。我也做了一個並排輸出,我排序軸,指數,下降指數等仍然得到那個血腥的錯誤。
這是現有的第一行數據
>>> existing[:1]
Date Open High Low Close Volume Adj Close
0 2016-05-27 51.919998 52.32 51.77 52.32 17653700 52.32
>>> data[:1]
Date Open High Low Close Volume Adj Close
0 2016-05-27 51.919998 52.32 51.77 52.32 17653700 52.32
這裏的輸出是確切的錯誤我收到:
>>> ne = (data != existing).any(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda3\lib\site-packages\pandas\core\ops.py", line 1169, in f
return self._compare_frame(other, func, str_rep)
File "C:\Anaconda3\lib\site-packages\pandas\core\frame.py", line 3571, in _compare_frame
raise ValueError('Can only compare identically-labeled '
ValueError: Can only compare identically-labeled DataFrame objects
這並解決了初始誤差,所以標記爲答案爲,但它不通過元件相比做的元件。我期待着一個布爾值矩陣(或bools類似的數據結構)。我得到一個布爾值true或false。 –
請注意,我的數據框大小不同。 –