2017-11-27 4 views
0

Wie kann ich die Werte der Spalte 4 in 1 und -1 ändern, so dass Iris-setosa durch 1 ersetzt wird und Iris-virginica durch -1 ersetzt wird?Werte einer Spalte im Pandas Datenrahmen ändern

 0 1 2 3   4 
0 5.1 3.5 1.4 0.2  Iris-setosa 
1 4.9 3.0 1.4 0.2  Iris-setosa 
2 4.7 3.2 1.3 0.2  Iris-setosa 
3 4.6 3.1 1.5 0.2  Iris-setosa 
4 5.0 3.6 1.4 0.2  Iris-setosa 
5 5.4 3.9 1.7 0.4  Iris-setosa 
6 4.6 3.4 1.4 0.3  Iris-setosa 
.. ... ... ... ...    ... 
120 6.9 3.2 5.7 2.3 Iris-virginica 
121 5.6 2.8 4.9 2.0 Iris-virginica 
122 7.7 2.8 6.7 2.0 Iris-virginica 
123 6.3 2.7 4.9 1.8 Iris-virginica 
124 6.7 3.3 5.7 2.1 Iris-virginica 
125 7.2 3.2 6.0 1.8 Iris-virginica 
126 6.2 2.8 4.8 1.8 Iris-virginica 

Ich würde die Hilfe zu schätzen wissen.

Antwort

1
df.iloc[df["4"]=="Iris-setosa","4"]=1 
df.iloc[df["4"]=="Iris-virginica","4"]=-1 
+0

Mit ILoc statt ix ersetzen können. – Wen

+1

@Wen Ja, ich lebe in der Vergangenheit, korrigiert für moderne Leute, die Pandas> = 0.20 benutzen :) – WNG

0

Klingt wie

df['4'] = np.where(df['4'] == 'Iris-setosa', 1, -1) 

sollte die Arbeit

0

tun würde ich so etwas wie dieses

def encode_row(self, row): 
    if row[4] == "Iris-setosa": 
     return 1 
    return -1 

df_test[4] = df_test.apply(lambda row : self.encode_row(row), axis=1)

dassvorausgesetzt tunist Ihr Datenrahmen

2

Sie

d = {'Iris-setosa': 1, 'Iris-virginica': -1} 
df['4'].replace(d,inplace = True) 

    0 1 2 3 4 
0 5.1 3.5 1.4 0.2 1 
1 4.9 3.0 1.4 0.2 1 
2 4.7 3.2 1.3 0.2 1 
3 4.6 3.1 1.5 0.2 1 
4 5.0 3.6 1.4 0.2 1 
5 5.4 3.9 1.7 0.4 1 
6 4.6 3.4 1.4 0.3 1 
.. ... ... ... ... ... 
120 6.9 3.2 5.7 2.3 -1 
121 5.6 2.8 4.9 2.0 -1 
122 7.7 2.8 6.7 2.0 -1 
123 6.3 2.7 4.9 1.8 -1 
124 6.7 3.3 5.7 2.1 -1 
125 7.2 3.2 6.0 1.8 -1 
126 6.2 2.8 4.8 1.8 -1 
Verwandte Themen