Saya menggunakan itertools.combinations untuk menghasilkan kombinasi untuk indeks kerangka data. Saya ingin kombinasi dalam urutan tertentu --> (High - Mid - Low)

Contoh

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)) mengembalikan [('High', 'Low'), ('High', 'Mid'), ('Low', 'Mid')]

Saya ingin grup ketiga menjadi ('Mid', 'Low'), bagaimana saya bisa mencapai ini?

1
Osca 12 Mei 2021, 08:48

1 menjawab

Jawaban Terbaik

Gunakan DataFrame.reindex pertama, tetapi nilai pertama dan kedua dalam daftar ditukar:

order = ['High','Mid','Low']
a = list(combinations(df_.reindex(order).index, 2))
print (a)
[('High', 'Mid'), ('High', 'Low'), ('Mid', 'Low')]
1
jezrael 12 Mei 2021, 06:18