How to append MultiIndex rows to empty pandas dataframe(如何将多索引行追加到空的 pandas 数据帧)
本文介绍了如何将多索引行追加到空的 pandas 数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想做这样的事情:
df = pd.DataFrame()
for row_ind1 in range(3):
for row_ind2 in range(3:6):
for col in range(6:9):
entry = row_ind1 * row_ind2 * col
df.loc[[row_ind1, row_ind2], col] = entry
并退出:
6 7 8
0 3 x x x
4 x x x
5 x x x
1 3 x x x
4 x x x
5 x x x
2 3 x x x
4 x x x
5 x x x
(作为奖励,获胜者可以填写答案。)
推荐答案
AMultiIndex
可以预初始化,以允许loc
的设置按预期工作:
# Pre-initialise a MultiIndex
df = pd.DataFrame(index=pd.MultiIndex.from_arrays([[], []]))
for row_ind1 in range(3):
for row_ind2 in range(3, 6):
for col in range(6, 9):
entry = row_ind1 * row_ind2 * col
df.loc[(row_ind1, row_ind2), col] = entry
df
:
6 7 8
0 3 0.0 0.0 0.0
4 0.0 0.0 0.0
5 0.0 0.0 0.0
1 3 18.0 21.0 24.0
4 24.0 28.0 32.0
5 30.0 35.0 40.0
2 3 36.0 42.0 48.0
4 48.0 56.0 64.0
5 60.0 70.0 80.0
尽管只在MultiIndex和Columns上使用broadcasted与NumPy的乘法来构建DataFrame并使用MultiIndex.from_product
单独创建索引和列可能更容易:
import numpy as np
import pandas as pd
idx = pd.MultiIndex.from_product([[0, 1, 2], [3, 4, 5]]).to_frame()
cols = np.array([6, 7, 8])
df = pd.DataFrame((idx[0] * idx[1]).to_numpy()[:, None] * cols,
index=idx.index,
columns=cols)
df
:
6 7 8
0 3 0 0 0
4 0 0 0
5 0 0 0
1 3 18 21 24
4 24 28 32
5 30 35 40
2 3 36 42 48
4 48 56 64
5 60 70 80
这篇关于如何将多索引行追加到空的 pandas 数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何将多索引行追加到空的 pandas 数据帧
基础教程推荐
猜你喜欢
- 如何防止Groupby超越指数? 2022-09-22
- 跟在带量词的前瞻后面有什么作用? 2022-09-22
- 在 pandas 中使用带有多重索引的.loc 2022-09-22
- 获取多索引中某个级别的最后一个元素 2022-09-22
- Python h5py-为什么我收到广播错误? 2022-09-21
- 如何在hdf5文件的多个组之间拆分数据? 2022-09-21
- 在OpenCV中放大后,Python会捕捉图像的特定部分 2022-09-22
- 从顶点坐标创建三角网格 2022-09-21
- 如何将RPC与Volttron配合使用 2022-09-21
- 使用工作区API导入方法导入数据库笔记本(动态内 2022-09-21