我有兩個DataFrames,它們具有相同級別(代碼和日期)的相同多索引。第一個包含有數據的每一行(來自數據庫提取),第二個是相同的DataFrame,除了它包含所有的鍵(每個產品的每個月的水平線)。熊貓 - 可以讀取MultiIndex的列表,但不能設置它們
爲了讓更多的明確的,這裏是第一數據框(df_data
):
BL0 BL1 BL2 BL3 Shipments
Code Month
ABC 2012-03-01 1000 1000 1000 1000 1000
DEF 2014-08-01 1000 1000 1000 1000 1000
2014-09-01 1000 1000 1000 1000 1000
GHI 2013-12-01 1000 1000 1000 1000 1000
2014-10-01 1000 1000 1000 1000 1000
2014-12-01 1000 1000 1000 1000 1000
這裏是第二個(df_full
),所有的一個月從2012年1至1月2015:
BL0 BL1 BL2 BL3 Shipments
Code Month
ABC 2012-01-01 NaN NaN NaN NaN NaN
2012-02-01 NaN NaN NaN NaN NaN
2012-03-01 1000 1000 1000 1000 1000
2012-04-01 NaN NaN NaN NaN NaN
...
DEF 2014-07-01 NaN NaN NaN NaN NaN
2014-08-01 1000 1000 1000 1000 1000
2014-09-01 1000 1000 1000 1000 1000
2014-10-01 NaN NaN NaN NaN NaN
...
GHI 2013-12-01 1000 1000 1000 1000 1000
2014-10-01 1000 1000 1000 1000 1000
2014-12-01 1000 1000 1000 1000 1000
現在,我有第一個,我試圖建立第二個。我使用MultiIndex創建了一個空的DataFrame,創建了填充NaN的每一列,並且我堅持將df_full
的值設置爲它們在df_data
中的值。
當我做
df_full.loc[ df_data.index, 'Shipments' ] = df_data['Shipments']
我得到一個錯誤,說的df_data
指數是不是在df_dull
:
KeyError: "[('ABC', '2012-03-01') ('DEF', '2014-08-01')\n ('DEF', '2014-09-01') ...,
('XYZ', '2014-11-01')\n ('XYZ', '2014-12-01')] not in index"
什麼錯誤我是,如果我只是做df_full.loc[ data.index, 'Shipments' ]
它返回系列沒有任何問題。我嘗試使用元組列表而不是索引,我也嘗試將切片設置爲1,但無濟於事。
我在這裏做錯了什麼?
'KeyError'中的索引看起來很奇怪。那裏有一個'\ n'?或者是打印輸出的人造物? – ako
另外,data.index是什麼?你只提到'df_data'和'df_full'。 – ako
'data.index'是'df_data.index',我編輯了這個問題來糾正這個問題。\ n可能與這個級別的索引是字符串而不是日期時間有關,正如我在我的答案中提到的那樣。 – ursan