W jakiś sposób proste dodanie łańcucha przed napisami jako część kolumny w podzbiorze mojej ramki danych nie działa. Bez otrzymania komunikatu o błędzie nowy ciąg nie powoduje dodania do kolumny_1 na podstawie wybranego podzbioru pasującej wartości w kolumnie_2.
Poniższy kod działa, a dane wyjściowe dodają „w” przed napisami w wyborze podzbioru.
'w' + df[(df.column_2 == 'af')]['column_1'].astype(str)
Ten kod generuje żądany wynik dla wybranych kolumn. Tam, gdzie poniższy kod powinien zastosować go do df, wydaje się, że nie dodaje „w” do podzbioru ramki danych.
df[(df.column_2 == 'af')]['column_1'] = 'w' + df[(df.column_2 == 'af')]['column_1'].astype(str)
Czego tu brakuje?
2 odpowiedzi
Użyj DataFrame.loc
aby uniknąć indeksowania łańcuchowego po obu stronach:
m = (df.column_2 == 'af')
df.loc[m, 'column_1'] = 'w' + df.loc[m, 'column_1'].astype(str)
df.loc[df.column_2 == 'af', 'column_1'] = 'w' + df[df.column_2 == 'af'].column_1
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.