python - Pandas:重组数据框

标签 python pandas dataframe

我有一个包含四列的数据框:

df = pd.DataFrame({'name': {1:'Aaron', 2:'Bobby', 3:'Carl'},  
               'job': {1:'mechanic', 2:'carpenter', 3:'plumber'},
               'experience': {1:12, 2:23, 3:14},
               'type': {1:'owner',2:'contractor',3:'assistant'}},
              columns=['name','job','experience','type'])
df

我想使用 pandas 来 reshape 数据,以便 names 是索引,job 是列标题,并具有 experiencetype 作为列的子标题 - 即,在 mechanic 列下,将有一个用于 experience 的子列type,与carpenter栏下相同,等等

我尝试过使用

df.set_index(['name', 'job']).unstack('job') 

但是,经验类型才是最重要的,而不是工作。有没有办法可以更改此设置,使 job 成为列标题的顶层?

感谢您的帮助!

最佳答案

您可以使用MultiIndex.swaplevel :

df.columns = df.columns.swaplevel(0,1)
print (df)
job    carpenter   mechanic    plumber   carpenter mechanic    plumber
      experience experience experience        type     type       type
name                                                                  
Aaron        NaN       12.0        NaN        None    owner       None
Bobby       23.0        NaN        NaN  contractor     None       None
Carl         NaN        NaN       14.0        None     None  assistant

关于python - Pandas:重组数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38101702/

相关文章:

python - 将函数 1 中元组的所有元素(从 *args)传递到 python 中的函数 2(作为 *args)

python - 删除字段中的大括号

python - Pandas 数据帧: Add Column Conditionally On Past Dates and Values

python - 广播错误 Pandas

绑定(bind)一组数据集的行?

python - 如何让 VirtualEnv 使用自定义版本的 setuptools?

python - 为什么解包比通过索引访问更快?

python - Azure ML 和 Pandas : How to convert String to DateTime

python - 如何从系列中获取数据帧索引?

python - 如何获取数据框列字符串中每个单词的第一个字母