Mam tę ramkę danych

dd = pd.DataFrame({'a':[1,5,3],'b':[3,2,3],'c':[2,4,5]})

   a  b  c
0  1  3  2
1  5  2  4
2  3  3  5

Chcę tylko wymienić liczbę kolumny A i B, która jest mniejsza niż cyfry kolumn C. Chcę tego operacji WISE

Ja to zrobiłem

dd.applymap(lambda x: 0 if x < x['c'] else x )

Otrzymuję błąd.

TypeError: 'int' object is not subscriptable

Zrozumiałem x jest int, ale jak uzyskać wartość kolumny C dla tego wiersza

Chcę tego wyjścia

   a  b  c
0  0  3  2
1  5  0  4
2  0  0  5
1
Ajay Chinni 15 październik 2020, 12:47

1 odpowiedź

Najlepsza odpowiedź

Użyj {x0}} z DataFrame.lt :

df = dd.mask(dd.lt(dd['c'], axis=0), 0)
print (df)
   a  b  c
0  0  3  2
1  5  0  4
2  0  0  5

Lub możesz ustawić wartości według porównania nadawania przez kolumnę c:

dd[dd < dd['c'].to_numpy()[:, None]] = 0
print (dd)
   a  b  c
0  0  3  2
1  5  0  4
2  0  0  5
2
jezrael 15 październik 2020, 09:50