3
我有以下DF,其中,列A,B,C是具有嚴格的排序分類變量:熊貓:問題與範疇列分鐘()
df = DataFrame([[0, 1, 'PASS', 'PASS', 'PASS'],
[0, 2, 'CHAIN', 'FAIL', 'PASS'],
[0, 3, 'PASS', 'PASS', 'TATPG'],
[0, 4, 'FAIL', 'PASS', 'FAIL'],
[0, 5, 'FAIL', 'ATPG', 'FAIL']],
columns = ['X', 'Y', 'A', 'B', 'C'])
for c in ['A','B','C']:
df[c] = df[c].astype('category', categories=['CHAIN', 'ATPG', 'TATPG', 'PASS', 'FAIL'], ordered=True)`
我想創建其定義一個新列d由分('A','B','C')。例如,第1行說'CHAIN'。這是最小的價值。因此,D [1] = CHAIN等。的d列應導致如下:
D[0] = PASS, D[1] = CHAIN, D[2] = TPATG, D[3] = PASS, D[4] = ATPG
我嘗試:
df['D'] = df[['A','B','C']].apply(min, axis=1)
但是,這是行不通的應用()使得A/B/C柱成爲類型的對象,因此分鐘的()按照字典順序排序值,而不是我提供的順序。
我也嘗試:
df['D'] = df[['A', 'B', 'C']].transpose().min(axis=0)
TRANSPOSE(移調)()也列中的A/B/C的結果得到改變輸入對象,而不是類別。
有關如何正確執行此操作的任何想法?如果使用apply(),我寧願不將列重新排列爲第二次分類。
df[indicator] = df[[any subset of (A,B,C)]].min()