2017-03-12 4 views

Antwort

2

Ich glaube, Sie Ausgabe zurück zuweisen müssen, besser weglassen ist apply wenn Arbeiten nur mit Spalte url:

df = pd.DataFrame({'url': ['www.CNN.com', 'www.Nbc.com', 'www.BBc.com', 'www.fOX.com'], 
        'var1': ['XSD', 'wer', 'xyz', 'zyx']}) 

print (df) 
      url var1 
0 www.CNN.com XSD 
1 www.Nbc.com wer 
2 www.BBc.com xyz 
3 www.fOX.com zyx 

#if types of column is str, astype is not necessary 
df.url = df.url.astype(str).str.lower() 
print (df) 
      url var1 
0 www.cnn.com XSD 
1 www.nbc.com wer 
2 www.bbc.com xyz 
3 www.fox.com zyx 

Aber wenn müssen alle Spalten von df zu lowercase string s konvertieren:

df = df.astype(str).apply(lambda x: x.str.lower()) 
print (df) 
      url var1 
0 www.cnn.com xsd 
1 www.nbc.com wer 
2 www.bbc.com xyz 
3 www.fox.com zyx 
+0

Die erste Lösung generierte einen Fehler '//anaconda/lib/python3.5/site-packages/pandas/core/generic.py:2701: SettingWithCopyWarning: Ein Wert versucht, auf einer Kopie eines Segments festgelegt werden von einem DataFrame. Versuchen Sie mit .loc [row_indexer, col_indexer] = Wert stattdessen Siehe die Einschränkungen in der Dokumentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self [Name] = Wert' Die zweite Lösung funktioniert obwohl –

+0

Ich denke, das Problem ist in Code über dieser Zeile, können Sie 2,3 Reihen oben teilen? – jezrael

+0

Oder überprüfen Sie [Docs] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#returning-a-view-versus-a-copy) – jezrael

4
df['url'] = df['url'].str.lower() 

sollte auf der Reihe funktionieren und ersetzen Sie sie durch die Kleinbuchstabenversion.

+1

Fehler '//anaconda/lib/python3.5/site-packages/ipykernel/__main__.py:3: SettingWithCopyWarning: Ein Wert versucht, auf eine Kopie eines Segments von einem DataFrame festgelegt werden. Versuchen Sie mit .loc [row_indexer, col_indexer] = Wert stattdessen Siehe die Einschränkungen in der Dokumentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy app.launch_new_instance() ' –

+0

@FeyziBagirov Ich habe das in meinem Testdatensatz nicht bekommen, den ich versucht habe, deinen zu spiegeln (auch Python 3.5). Können Sie Code in Ihre Frage eingeben, um den Datensatz zu generieren, nur damit wir die gleiche Eingabe haben? – David

+0

@FeyziBagirov können Sie versuchen, 'df ['url'] = df.loc [:, 'url']. Str.lower()' aber ich stimme mit David ist es unnötig hier –

Verwandte Themen