python - 将二维值数组分配给 Pandas 多索引数据框
问题描述
我有最好以 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
但这不起作用。我也尝试过用 iloc 替换 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我在DATE
索引列string
和当它是datetime
dtype时测试了这两个选项 - 在这两种情况下,上面的代码都可以正常工作。
推荐阅读
- javascript - 测试 Vue 组件 (composition-api) 时未触发 setup()
- python - 如何在 IoT Core 中长期使用 MQTT?
- python - 从压缩文件夹中的文件夹中读取 txt 文件作为 pandas 数据框
- dependency-injection - 如何使用 Umbraco.Core.Composing (Umbraco 8) 按类型获取注入依赖项的实例
- awk - 如何在文件内容的输出中创建表?
- linux - 合并两个列文件,但将第二个文件的列插入第一个文件的列
- javascript - 如何使用导航链接与路由器和引导样式做出反应
- php - 如何使用下拉列表选择数据库上的表?
- java - 无法创建配置,因为找不到 Bean 验证提供程序 - Vaadin 14 Spring Boot
- java - Akka 两个在同一类中的 receiveBuilder