2017-09-20 3 views
0

Arbeiten mit Datenrahmen df:Python Pandas: Attribute: 'str' Objekt hat kein Attribut 'loc'

Count 
1 
2 
3 
4 
5 

Wollen zweite Spalte hinzuzufügen, stuft, dass alles über 3 als '4+' - benötigt Ausgang:

Count | Category 
1  1 
2  2 
3  3 
4  4+ 
5  4+ 

Dies ist mein Code:

df['Category'] = df['Count'] 
df = df.loc[df['Count'] > 3, 'Category'] = '4+' 

Und ich bekomme diese Fehlermeldung:

AttributeError: 'str' object has no attribute 'loc' 
+0

FYI - auch 'df [ 'Kategorie verwenden können '] = np.where (df [' Count '] <4, df [' Count '],' 4 + ') ' – Zero

Antwort

1

Gehen Sie einfach mit

df['Category'] = df['Count'] 
df.loc[df['Count'] > 3, 'Category'] = '4+' 
+0

danke - kannst du mir erklären, was ich falsch gemacht habe? – jeangelj

+0

Ich habe gerade versucht, ohne die "df =" und ich bekomme den gleichen Fehler – jeangelj

+0

Können Sie den Code, den Sie ausprobiert? – Vaishali

1

Sie können versuchen, mit:

import pandas as pd 
df = pd.DataFrame({"Count": [1,2,3,4,5]}) 
df["Category"] = df["Count"].apply(str) 
df["Category"][df['Count'] > 3] = "4+" 

Ausgabe wäre:

>>> df 
    Count Category 
0  1  1 
1  2  2 
2  3  3 
3  4  4+ 
4  5  4+ 
+0

Es löst SettingWithCopyWarning: Ein Wert versucht, auf eine Kopie eines Segments von einem DataFrame gesetzt werden – Vaishali

+0

Haben Sie das nur das Beispiel, das ich angegeben oder Sie haben Ihren eigenen Datenrahmen benutzt? Wenn Ihr Datenrahmen Nummern hat, sollte dies funktionieren. –

+0

Bitte gehen Sie durch diesen Link, um die Einstellung zu verstehen, mit der Warnung "copy" und warum sollte loc verwendet werden. https://stackoverflow.com/questions/20625582/how-to-deal-with-settingwithcopywarning-in-pandas – Vaishali

Verwandte Themen