對於單元測試,我必須比較兩個熊貓數據幀(有一列,所以它們也可以投射到系列而不會丟失信息)。問題是一個是日期時間類型的索引,另一個是日期。就我們的目的而言,由於日期時間的時間分量未被使用,所以兩者中的信息是相等的。比較幾乎相同的兩個熊貓系列/數據幀
要檢查兩個對象是相等的單元測試我能:
- 提取其中之一的指標,並轉換爲日期/日期
- 提取物中的一列剛值,比較那些和開始和結束日期
我缺少任何優雅的方式來比較兩個?
代碼例如:
from datetime import date, datetime, timedelta
import pandas as pd
days_in_training = 40
start_date = date(2016, 12, 1)
dates = [start_date + timedelta(days=i) for i in range(days_in_training)]
actual = pd.DataFrame({'col1': range(days_in_training)}, index=dates)
start_datetime = datetime(2016, 12, 1)
datetimes = [start_datetime + timedelta(days=i) for i in range(days_in_training)]
expected = pd.DataFrame({'col1': range(days_in_training)}, index=datetimes)
assert(all(actual == expected))
給出:
ValueError: Can only compare identically-labeled DataFrame objects
嘗試'assert(all(actual.values == expected.values))''here .values'返回一個np數組,因此不涉及索引 – EdChum
嗯,是的。這是我的建議之一,但它不測試日期是否匹配。我可以單獨測試,但我只是想知道是否有一個優雅的解決方案,一次做所有事情。 –
爲什麼不直接將索引轉換爲日期? 'expected.index = expected.index.date',那麼它實際上會對齊 – EdChum