使用 itertools.combinations 生成指定顺序的组合
Generate combinations with specified order with 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))
returns [('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')]
我使用 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))
returns [('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')]