2016-04-15 10 views
0

Ich bin auf der Suche nach so etwas.DataFrame add boolean Spalte durch Überprüfung mehrerer Parameter

tweets = pd.DataFrame() 

tweets['worldwide'] = [tweets['user.location'] == ["Worldwide", "worldwide", "WorldWide]] 

Die neue Spalte ‚weltweit‘ hat Boolesche Werte (True, False) durch Spalte Tweets Überprüfung [ ‚user.location‘], die weltweit drei verschiedene Arten von Schreibweisen haben.

Ich möchte diesen Wert "True" sollte für alle Baumformate der Rechtschreibung "weltweit" zurückgegeben werden.

Antwort

1

IIUC dann wollen Sie isin:

tweets['worldwide'] = [tweets['user.location'].isin(["Worldwide", "worldwide", "WorldWide"])] 

Dies wird True zurück, wenn einer der Werte vorhanden sind

In [229]: 
df = pd.DataFrame({'Tweets':['worldwide', 'asdas', 'Worldwide', 'WorldWide']}) 
df 

Out[229]: 
     Tweets 
0 worldwide 
1  asdas 
2 Worldwide 
3 WorldWide 

In [230]: 
df['Worldwide'] = df['Tweets'].isin(["Worldwide", "worldwide", "WorldWide"]) 
df 

Out[230]: 
     Tweets Worldwide 
0 worldwide  True 
1  asdas  False 
2 Worldwide  True 
3 WorldWide  True 

Aber ich persönlich denke, dass es mehr Kilometer ist die Tweets, so dass Sie bei der Normalisierung Vergleichen Sie mit einer einzelnen Darstellung, indem Sie die Tweets mit str.lower in eine niedrigere Darstellung umwandeln und dann str.contains verwenden, um zu testen, ob die Tweets Ihr Wort enthalten:

In [231]: 
df['Worldwide'] = df['Tweets'].str.lower().str.contains("worldwide") 
df 

Out[231]: 
     Tweets Worldwide 
0 worldwide  True 
1  asdas  False 
2 Worldwide  True 
3 WorldWide  True 
0

Ich habe dies als endgültige Form: tweets['worldwide'] = tweets['user.location'].str.lower().str.contains("worldwide")

und die endgültige Anzahl entstand als:

tweets['worldwide'].value_counts() 


False 4998 
True  185 
Name: worldwide, dtype: int64 
Verwandte Themen