python - 为 MultiIndex 中的每个唯一元素重复 DataFrame 的索引
问题描述
我正在寻找一种方法,可以为给定的 MultiIndex 唯一元素重复索引的每个元素。
因此,假设我使用以下代码仅使用索引创建一个空数据:
df_x1 = pd.DataFrame({'x1':np.linspace(1,4,4)})
df = pd.DataFrame(index = df_x1['x1'].values)
现在,我想使用以下数据创建多级索引:
df_x2 = pd.DataFrame({'x2': np.linspace(0,2,3)})
之后,我想为 df_x2 的每个唯一元素,将 df_x1 中的所有索引设置为 df_2 的子索引。所以,最后,我希望有一个空数据框,其结果类似于以下内容:
0 1
2
3
4
1 1
2
3
4
2 1
2
3
4
解决方案
我认为您需要MultiIndex.from_product
所有MultiIndex
组合:
mux = pd.MultiIndex.from_product([df_x2['x2'], df.index])
print (mux)
MultiIndex([(0.0, 1.0),
(0.0, 2.0),
(0.0, 3.0),
(0.0, 4.0),
(1.0, 1.0),
(1.0, 2.0),
(1.0, 3.0),
(1.0, 4.0),
(2.0, 1.0),
(2.0, 2.0),
(2.0, 3.0),
(2.0, 4.0)],
)
然后传递给DataFrame
构造函数:
df2 = pd.DataFrame(index=mux)
或者,如果数据df
不为空并且需要重复行添加DataFrame.reindex
:
df2 = df.reindex(mux, level=1)
print (df2)
Empty DataFrame
Columns: []
Index: [(0.0, 1.0), (0.0, 2.0), (0.0, 3.0), (0.0, 4.0), (1.0, 1.0),
(1.0, 2.0), (1.0, 3.0), (1.0, 4.0), (2.0, 1.0), (2.0, 2.0),
(2.0, 3.0), (2.0, 4.0)]
print (df2.index)
MultiIndex([(0.0, 1.0),
(0.0, 2.0),
(0.0, 3.0),
(0.0, 4.0),
(1.0, 1.0),
(1.0, 2.0),
(1.0, 3.0),
(1.0, 4.0),
(2.0, 1.0),
(2.0, 2.0),
(2.0, 3.0),
(2.0, 4.0)],
)
推荐阅读
- sql - 每次添加值加 1 作为更新
- sql - SELECT SUM query with multiple date parameters in WHERE clause
- sql - 如何从表的每组中删除 90% 的记录(postgres)
- javascript - SVG update transform matrix not saved
- go - How to update imports when they change location
- node.js - Nodejs,调用performance.getEntriesByType时性能挂钩崩溃
- linked-server - How to pass variable to update query with linked server which is having xml column
- ios - CloudKit delete records at specific date time
- python - "No Module named '_portaudio': Unable to find solution
- .htaccess - htaccess 在子文件夹上重写材料和语言