J'ai un dataframe nommé AH, avec les colonnes F1 et F2 :

F1      F2
aq      ab
ac      my

(etc)

Je voulais faire une autre colonne et classer d'abord chaque colonne pour qu'elle devienne :

F1  Category1    F2    Category2
aq     77        ab     11
ac     77        my     55

Les données sont déjà prétraitées et j'ai fait ce code :

for len in range (AH):

    if AH ['F1'] =={'aq','ac'}:
        AH.loc[index, 'Category1'] = '77'
    elif AH ['F2'] =={'ab'}:
        AH.loc[index, 'Category1'] = '11'
    elif AH ['F2'] =={'my'}:
        AH.loc[index, 'Category1'] = '55'
   else:
        'NaN'

Cependant, l'erreur a montré:

TypeError: 'DataFrame' object cannot be interpreted as an integer
    

Quelqu'un qui peut répondre ?

0
kiwi_kimchi 12 nov. 2020 à 11:41

1 réponse

Meilleure réponse

Vous pouvez créer une fonction que vous pouvez appeler pour chaque valeur de la colonne (F1 et F2) comme ci-dessous :

def fun(x):
    if x is None:
        return ""
    if x in ['aq','ac']:
        return "77"
    if x in ['ab']:
        return "11"
    if x in ['my']:
        return "55"
#calling fun() for each value of F1 column and F2 column        
AH['Category1']=[fun(x) for x in AH.F1.values]
AH['Category2']=[fun(x) for x in AH.F2.values]
1
Amit Kumar 12 nov. 2020 à 08:54