pandas - 使用 itertools.combinations 生成具有指定顺序的组合
问题描述
我曾经itertools.combinations
为数据框的索引生成组合。我想要指定顺序的组合 -->(High - Mid - Low)
例子
from itertools import combinations
d = {'levels':['High', 'High', 'Mid', 'Low', 'Low', 'Low', 'Mid'], 'converted':[True, True, True, False, False, True, False]}
df = pd.DataFrame(data=d)
df_ = pd.crosstab(df['levels'], df['converted'])
df_
converted False True
levels
High 0 2
Low 2 1
Mid 1 1
list(combinations(df_.index, 2))
返回[('High', 'Low'), ('High', 'Mid'), ('Low', 'Mid')]
我想成为第三组('Mid', 'Low')
,我怎样才能做到这一点?
解决方案
使用DataFrame.reindex
第一个,但列表中的第一个和第二个值被交换:
order = ['High','Mid','Low']
a = list(combinations(df_.reindex(order).index, 2))
print (a)
[('High', 'Mid'), ('High', 'Low'), ('Mid', 'Low')]
推荐阅读
- python - 将 pandas 数据框放在 django 模板中
- c# - 使用 EF 将来自 API 的数据加入 SQL 表
- python - 如何在 django CSV 导出中动态更改附件文件名?
- pandas - 获取多个数据框名称作为列表
- spring - 错误消息:org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联
- swift - 在 Credimax Mastercard Payment API 中创建订单和交易
- node.js - 在 express 服务的多个 react 客户端内路由
- sql - 在首选列值的同时选择唯一 ID
- php - 如何使用 Laravel 对页面进行密码保护?
- php - 此路由不支持 GET 方法 api.php