簡體   English   中英

在熊貓數據框中創建多索引列

[英]Make multiindex columns in a pandas dataframe

我有一個具有以下結構的熊貓數據框:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(32).reshape((4,8)), 
            index = pd.date_range('2016-01-01', periods=4),
            columns=['male ; 0', 'male ; 1','male ; 2','male ; 4','female ; 0','female ; 1','female ; 2','female ; 3',])

列名稱雜亂無章,標題名稱中包含兩個變量以及原始電子表格中的殘留標點符號。

我想做的是在我的數據框中設置一個名為“性別和年齡”的MultiIndex列。

我試過像這樣使用pd.MultiIndex.from_tuples

columns = [('Male', 0),('Male', 1),('Male', 2),('Male', 3),('Female', 0),('Female', 1),('Female', 2),('Female', 3)]
df.columns = pd.MultiIndex.from_tuples(columns)

然后命名列索引:

df.columns.names = ['Sex', 'Age']

這給出了我想要的結果。 但是,我的數據框對於每個性別的年齡都超過100歲,因此這不是很實際。

有人可以指導我如何以編程方式從元組設置MultiIndex列。

Jaco的答案很好用,但是您甚至可以直接使用.from_product()從產品創建MultiIndex

sex = ['Male', 'Female']
age = range(100)
df.columns = pd.MultiIndex.from_product([sex, age], names=['Sex', 'Age'])

您可以使用itertools模塊,通過在數據中采用性別和年齡范圍的笛卡爾連接來生成columns變量,例如:

import itertools
max_age = 100
sex = ['Male','Female']
age = range(max_age)
columns=list(itertools.product(sex, age))
df.columns = pd.MultiIndex.from_tuples(columns)
df.columns.names = ['Sex', 'Age']

暫無
暫無

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

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