python - 多级列和常规列的混合
问题描述
创建具有多级列的 Pandas 数据框很简单,如下所示:
import numpy as np
import pandas as pd
dat = np.random.randn(5, 4)
header = pd.MultiIndex.from_product([['Truck','Car'],
['Speed','Position']],
names=['',''])
df2 = pd.DataFrame(dat, columns=header)
要得到
但是,我需要一个如下表(添加“年龄”列)。这可以使用熊猫吗?
解决方案
总是需要MultiIndex
,可能在某些级别使用空字符串,例如:
df2[('', 'Age')] = np.random.randn(5)
print (df2)
Truck Car
Speed Position Speed Position Age
0 1.224236 -0.545658 0.906748 -0.982617 -0.654448
1 -0.633162 0.825520 -1.284497 -0.347309 -0.672104
2 -1.077761 0.972575 0.412191 -0.132086 0.870368
3 -0.673351 1.222222 -0.926413 1.424994 1.003245
4 -0.124790 0.705492 0.719548 0.141464 -0.366450
print (df2.columns)
MultiIndex([('Truck', 'Speed'),
('Truck', 'Position'),
( 'Car', 'Speed'),
( 'Car', 'Position'),
( '', 'Age')],
)
如果在最后一个版本中传递单列 pandas 将第二级转换为空字符串:
df2['Age'] = np.random.randn(5)
print (df2)
Truck Car Age
Speed Position Speed Position
0 1.128052 0.792584 -1.750842 -0.808869 -1.330033
1 -1.412602 -0.803010 0.798280 1.755996 1.261033
2 -0.075504 0.420177 0.156556 -0.056861 -0.648126
3 -0.538234 0.901387 0.224944 1.277788 2.245300
4 0.629269 0.361891 3.638726 -1.201221 -1.012394
print (df2.columns)
MultiIndex([('Truck', 'Speed'),
('Truck', 'Position'),
( 'Car', 'Speed'),
( 'Car', 'Position'),
( 'Age', '')],
)
推荐阅读
- docx4j - 如何以编程方式绑定 Table docx4j 中的中继器?
- javascript - Nuxt、Webpack 和 mysql 包:错误:接收到的数据包顺序错误
- cucumber-jvm - 在 Cucumber-JVM Parallel Plugin 成功创建 Runner 后,似乎 Maven Surefire 正在尝试连接到 TestNG 以运行测试用例
- maven - Java , J2EE , Javax FX , Maven : 找不到基本名称的包 .. 大黑洞?
- travis-ci - 为每个 travis-ci 作业单独的 after_success 命令
- angular - Angular Observable 偶尔会订阅多次
- android - 没有 setOnClickListener 的 TextView 内容大声朗读(自动文本转语音)
- java - 长按不适用于 webview 中的鼠标
- django - zappa 为具有多个图像的 Django 表单提供 413 请求实体太大错误
- python - 如何在 Python 中制作多波图