Mam DF, który wygląda tak:

Id     Class               Label
0      APPS                Item
1      MODEL               Item
2      PRICE               Money

Chcę sprawdzić wszystkie wpisy Class, gdzie etykieta jest Item. Wśród tych klas chcę zastąpić wszystkie wystąpienia APPS za pomocą innego ciągu OTHERS i chcesz wymienić Label takich wierszy do innego ciągu np. SOFTWARE Jak mogę to osiągnąć? Próbowałem coś takiego:

def changeLabelClass(label):
    if (label == "")
    
mask = modifiedDf['Label'] == "Item"
modifiedDf.loc[mask, 'Class'] = [changeLabelClass(x) for x in modifiedDf.loc[mask, 'Class']]

Wynik:

Id     Class               Label
0      OTHERS              SOFTWARE
1      MODEL               Item
2      PRICE               Money
1
a125 23 listopad 2020, 11:24

1 odpowiedź

Najlepsza odpowiedź

Użyj DataFrame.loc Z łańcuchem 2 warunki przez & dla bitWise AND - Oto lista przypisywania z 2 wartościami, ponieważ wybrane 2 kolumny ['Class', 'Label']:

mask1 = df['Label'] == "Item"
mask2 = df['Class'] == "APPS"

df.loc[mask1 & mask2, ['Class', 'Label']] = ['OTHERS','SOFTWARE']
print (df)
   Id   Class     Label
0   0  OTHERS  SOFTWARE
1   1   MODEL      Item
2   2   PRICE     Money
1
jezrael 23 listopad 2020, 08:34