Wählen Sie die Datenrahmenspalte aus und ersetzen Sie Werte durch Indizes, wenn TruePython

Python-Programme
Anonymous
 Wählen Sie die Datenrahmenspalte aus und ersetzen Sie Werte durch Indizes, wenn True

Post by Anonymous »

Es ist schwer, den richtigen Titel zu finden ... hier ist, was ich will:
Ich habe einen Datenrahmen und eine Spalte col1 mit Werten: val1, val2, val3Ich möchte die Zeilen mit den Werten val2 oder val3 für diese bestimmte Spalte auswählen und sie durch den Wert val4 ersetzen, aber nicht für alle, sondern nur für einen „Slice“ zwischen idx x und y:
import pandas as pd
data = {'col1':["val1","val3","val3","val2","val1","val2","val3","val1"],'col2':["val3","val1","val2","val1","val2","val3","val2","val2"]}
df = pd.DataFrame(data)
df
col1 col2
0 val1 val3
1 val3 val1
2 val3 val2
3 val2 val1
4 val1 val2
5 val2 val3
6 val3 val2
7 val1 val2

Wählen Sie Zeilen aus Spalte 1 mit den Werten val2 oder val3 aus:
(df['col1']=="val2") | (df['col1']=="val3")
0 False
1 True
2 True
3 True
4 False
5 True
6 True
7 False

Jetzt möchte ich die ersten 4 True-Zeilen für col1 (Zeilen mit Index 1 2 3 5) durch val4 ersetzen, um Folgendes zu erhalten:
col1 col2
0 val1 val3
1 val4 val1
2 val4 val2
3 val4 val1
4 val1 val2
5 val4 val3
6 val3 val2
7 val1 val2

Ich dachte so etwas wie:
df[((df['col1']=="val2") | (df['col1']=="val3"))==True][0:4] = "val4"
aber es funktioniert nicht (keine Überraschung...)
Ich dachte, ich müsste so etwas wie .loc verwenden
Danke für jeden Hinweis

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post