簡體   English   中英

將2D值數組分配給Pandas多索引數據框

[英]Assigning a 2d array of values to a Pandas multiindex dataframe

我的計算結果最好以Pandas MultiIndex格式存儲。 出於具體目的,讓我們考慮以下形式(盡管實際結構是通過編程確定的)

                        X         Y         Z       
DATE                                                      
2018-01-01 A           NaN       NaN       NaN      
           B           NaN       NaN       NaN      
           C           NaN       NaN       NaN      
2018-01-02 A           NaN       NaN       NaN       
           B           NaN       NaN       NaN      
           C           NaN       NaN       NaN       

我想將numpy數組輸出分配給特定的時間片。 說我有

output = np.array([[1,2,3],[2,2,1],[4,2,3]])

所以所需的輸出是

                        X         Y         Z       
DATE                                                      
2018-01-01 A           NaN       NaN       NaN      
           B           NaN       NaN       NaN      
           C           NaN       NaN       NaN      
2018-01-02 A             1         2         3       
           B             2         2         1   
           C             4         2         3   

我嘗試了pandas.IndexSlice,其中j是第j個時間片。

df.loc[pd.IndexSlice[j,:], :] = output

但這不起作用。 我也嘗試過用loc代替loc,但無濟於事。 在非MultiIndex數據框中,我可以將列表分配給DataFrame中的特定列,而不必分別分配每個元素。 有沒有一種方法可以將矩陣轉換為MultiIndex數據幀?

您的代碼工作正常。

演示:

In [70]: df.loc[pd.IndexSlice['2018-01-02', :], :] = output

In [71]: df
Out[71]:
                 X    Y    Z
DATE       I2
2018-01-01 A   NaN  NaN  NaN
           B   NaN  NaN  NaN
           C   NaN  NaN  NaN
2018-01-02 A   1.0  2.0  3.0
           B   2.0  2.0  1.0
           C   4.0  2.0  3.0

PS i在DATE索引列為stringdatetime dtype時測試了這兩個選項-在上述兩種情況下,以上代碼均能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM