python - 合并多索引数据框中的列
问题描述
我有一个看起来像这样的多索引数据框(对不起图片,但我无法通过代码复制数据框):
产品相同,但顺序不同。价格需要分开。
我想有一个产品列,其他列是价格,如下所示:
解决方案
这是创建 multiIndex 数据框的一种方法。
tuples = list(zip(*[
["a","a","b","b","c","c"],
["product","price","product","price","product","price"],
]))
columns = pd.MultiIndex.from_tuples(tuples)
df = pd.DataFrame(
[['apple', 1, 'oranges', 2, 'bananas', 1],
['oranges', 4, 'bananas', 3, 'oranges', 2],
['bananas', 5, 'apple', 4, 'apple', 3]],
columns=columns)
df
输入
a b c
product price product price product price
0 apple 1 oranges 2 bananas 1
1 oranges 4 bananas 3 oranges 2
2 bananas 5 apple 4 apple 3
代码
df = df.stack(0).reset_index(1).pivot(
columns='level_1', index='product').reset_index()
df.columns = df.columns.droplevel(0).rename(None)
df
输出
a b c
0 apple 1 4 3
1 bananas 5 3 1
2 oranges 4 2 2
推荐阅读
- maven - 当使用 testng 并行运行自动生成的测试运行器时,面临以下异常
- jquery - 想要在 Bootstrap 日期时间选择器中禁用特定日期的特定时段
- python - Python:查找素数算法
- c - 我创建 char 数组缩写的程序不打印任何内容。我的错误在哪里?
- node.js - 无法创建具有一对多关系的对象
- finite-automata - 有限自动机字符串不以 ba 结尾
- reactjs - 在 React 开发中使用代理时为生产设置基本 url
- c++ - 如何在给出前两个数字的级数中找到大于 x 的第 n 个最小子数组和?
- c++ - 从矩阵中删除一行的分段错误
- bash - 如何从 Ansible-playbook 的 bash-script 启动后台循环