我df
在Pandas中有一个数据框,看起来像这样:
stores product discount
Westminster 102141 T
Westminster 102142 F
City of London 102141 T
City of London 102142 F
City of London 102143 T
最后,我想得到一个像这样的数据集:
stores product_1 discount_1 product_2 discount_2 product_3 discount_3
Westminster 102141 T 102143 F
City of London 102141 T 102143 F 102143 T
如何在熊猫中做到这一点?
我认为这是stores
专栏文章的枢纽,但有多个。还是这是“解开”而不是“枢轴”?
我试过了:
df.pivot("stores", ["product", "discount"], ["product", "discount"])
但是我明白了TypeError: MultiIndex.name must be a hashable type
。
使用DataFrame.unstack
的重塑,只有必要时创建计数器通过GroupBy.cumcount
,第二级上次更改排序和按列扁平化多指标map
:
df = (df.set_index(['stores', df.groupby('stores').cumcount().add(1)])
.unstack()
.sort_index(axis=1, level=1))
df.columns = df.columns.map('{0[0]}_{0[1]}'.format)
df = df.reset_index()
print (df)
stores discount_1 product_1 discount_2 product_2 discount_3 \
0 City of London T 102141.0 F 102142.0 T
1 Westminster T 102141.0 F 102142.0 NaN
product_3
0 102143.0
1 NaN
问题内容: 给定以下形式的方形熊猫DataFrame: 如何能在上三角熔化得到以下形式的矩阵 我对惯用的熊猫解决方案更感兴趣,自定义索引器将很容易手动编写… 预先感谢您的考虑和回应。 问题答案: 首先,我将的较低值转换为by和and ,然后设置列名称:
问题内容: 下面是我的数据框 我想在第一个位置插入新行 姓名:院长,年龄:45,性别:男 在熊猫中做到这一点的最佳方法是什么? 问题答案: 如果要经常进行操作,那么就性能而言,首先将数据收集到列表中然后使用(类似于@Serenity的解决方案)是有意义的: 演示: PS我不会把,,过于频繁(每单排),因为它是相当昂贵。因此,想法是分批进行…
问题内容: 我有一个形状为(X,Y)的Pandas数据框对象,如下所示: 还有一个形状为(X,Z)的numpy稀疏矩阵(CSC),看起来像这样 如何将矩阵中的内容添加到新命名列中的数据框中,以使数据框最终像这样: 请注意,数据框现在具有形状(X,Y + 1),并且矩阵中的行是数据框中的元素。 问题答案: import numpy as np import pandas as pd import s
问题内容: 我有两个熊猫数据框,一个叫做“ orders”,另一个叫做“ daily_prices”。daily_prices如下: 订单如下: 两个数据帧的索引均为datetime.date。通过使用列表解析来遍历所有订单并在“ daily_prices”数据框中查找特定日期的特定报价,然后将该列表作为列添加到“订单”数据框中的“价格”列。 “订单”数据框。我想使用数组操作而不是循环执行此操作。
问题内容: 我想像这样向数据框添加列“ D”: 根据以下字典: 因此结果数据框显示为: 到目前为止,我尝试了该方法,但无法弄清楚它如何与Dictionary一起工作。 问题答案: 调用并传递字典,这将执行查找并返回该键的关联值:
问题内容: 给定一个DataFrame: 添加包含常量值(例如0)的新列的最简单方法是什么? 这是我的解决方案,但我不知道为什么这会将NaN放入“新”列? 问题答案: 之所以将其放入一列中,是因为和您右侧对象的有所不同。@zach显示了分配新的零列的正确方法。通常,尝试使索引尽可能地对齐。一个缺点是,当指数不对准你,无论他们 是不是 一致。尝试使用和方法来获得一些直觉,以便对齐具有部分,完全和未对
问题内容: 案例:我的脚本返回一个数据框,该数据框需要作为新的数据行附加到现有的Google电子表格中。到目前为止,我正在通过gspread将数据框附加为多个单行。 我的代码: 有没有一种方法可以附加整个数据帧而不是多个单行? 问题答案: 我可以推荐:
我有一个熊猫DataFrame,我想通过使用Groupby并根据小时时间增量添加任意数量的列,并从第三列填充数据,将其转换为时间表(出于可视化目的)。 源数据帧可能如下所示: 我的目标是: 我无法得到的是(如果不使用循环手动构造),根据第一个数据帧中的唯一或小时范围添加任意数量的列(在groupby操作之后),然后根据第一个数据帧中的小时和楼层列计算每个列的值。 有什么想法吗?