![](/img/trans.png)
[英]Assigning values to Pandas Multiindex DataFrame by index level
[英]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
索引列为string
且datetime
dtype时测试了这两个选项-在上述两种情况下,以上代码均能正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.