pandas - 如何使数据透视表的熊猫索引成为列名的一部分?
问题描述
我正在尝试将两列移出另一个标志列,而无需多索引。我想让列名成为指标本身的一部分。举个例子:
import pandas as pd
df_dict = {'fire_indicator':[0,0,1,0,1],
'cost':[200, 300, 354, 456, 444],
'value':[1,1,2,1,1],
'id':['a','b','c','d','e']}
df = pd.DataFrame(df_dict)
如果我执行以下操作:
df.pivot_table(index = 'id', columns = 'fire_indicator', values = ['cost','value'])
我得到以下信息:
cost value
fire_indicator 0 1 0 1
id
a 200.0 NaN 1.0 NaN
b 300.0 NaN 1.0 NaN
c NaN 354.0 NaN 2.0
d 456.0 NaN 1.0 NaN
e NaN 444.0 NaN 1.0
我想要做的是以下几点:
id fire_indicator_0_cost fire_indicator_1_cost fire_indicator_0_value fire_indicator_0_value
a 200 0 1 0
b 300 0 1 0
c 0 354 0 2
d 456 0 1 0
e 0 444 0 1
我知道SAS中有一种方法。python有办法pandas
吗?
解决方案
只需重命名和 re_index:
out = df.pivot_table(index = 'id', columns = 'fire_indicator', values = ['cost','value'])
out.columns = [f'fire_indicator_{y}_{x}' for x,y in out.columns]
# not necessary if you want `id` be the index
out = out.reset_index()
输出:
id fire_indicator_0_cost fire_indicator_1_cost fire_indicator_0_value fire_indicator_1_value
-- ---- ----------------------- ----------------------- ------------------------ ------------------------
0 a 200 nan 1 nan
1 b 300 nan 1 nan
2 c nan 354 nan 2
3 d 456 nan 1 nan
4 e nan 444 nan 1
推荐阅读
- flutter - How to automatically scroll through all the ListTiles in the Listview.seperated in Flutter?
- python - 硒 err0r | 消息:“operadriver.exe”可执行文件需要在 PATH 中
- javascript - Android APK 找不到浏览器扩展
- c# - 如何使用c#重置datagridview
- vba - 在VBA中如何在网页上向下移动直到完成网页加载
- c++ - 使用 memcpy()
- reveal.js - 将reveal.js与asciidoc一起使用时,如何使用分步代码高亮?
- angular - 与 http.get - HttpClient - Angular 断开连接时可以替换 URL
- django - 上传后在 ImageField 中自动保存图像列表 - django 3
- amazon-web-services - 需要功能:[CAPABILITY_IAM] Cloudformation AWS 控制台