Próbuję dowiedzieć się, jak automatycznie zmienić wartości kolumny, gdy przypisuję wartość do określonej kolumny. Szczegóły w następujący sposób;

     Body                     ADE              HDU            Double
Hello John                     0                0                0
你好                           5                0                0
Cassidy! Hi                    0                0                0
வணக்கம் அங்கே                 5             AA123455            0

Jak widać powyżej, jest to część moich plików csv, które zawierają tysiące wierszy. Kolumna „ADE” składa się z 0 i 5, gdzie 0 oznacza zwykły alfabet, a 5 oznacza znak UNICODE. Kolumna „HDU” reprezentuje kolumnę „Treść”, która zawiera więcej niż 153 znaki w kolumnie „Treść”.

Cele tutaj, kiedy otworzę plik csv, jeśli wstawię „Ft0” przed tekstem w kolumnie „Treść”, wartość w polu „Double” zostanie zaktualizowana na „1”. Na przykład:

Body                      ADE         HDU             Double
Ft0 Hello John             0           0                1

Poniżej znajduje się moje aktualne kody;

for p5 in df:
            if df = df[(df['ADE'] == '0') & (df['HDU'].isnull())]:
               if df.loc[df['Body'].str.len(156)] 

enter image description here

enter image description here

Tutaj utknąłem z moimi kodami. Próbowałem z np.where, jeśli warunki.
Jestem całkiem nowy w pandach i od tygodnia mam do czynienia z pytonem.

Byłbym wdzięczny za twoją sugestię, aby osiągnąć moje pożądanie.

Doceniam i bardzo dziękuję!

1
hula-hula 7 marzec 2020, 14:00

2 odpowiedzi

Najlepsza odpowiedź

To może ci pomóc.

df.loc[df['Body'].str.contains('Ft0'), 'Double'] = 1

Aktualizacja

Oryginalna ramka danych

             Body  ADE  HDU  Double
0  Ft0 Hello John    0    0       0

Zastosowany kod:

df.loc[df['Body'].str.contains('Ft0'), 'Double'] = 1

Wynik:

             Body  ADE  HDU  Double
0  Ft0 Hello John    0    0       1
1
talatccan 7 marzec 2020, 12:05

@Syafiq Rosli spróbuj

df['Double'] = np.where(df['Body'].str.contains('Ft0'), 1, df['Double'])
1
David Erickson 7 marzec 2020, 11:38