2017-10-24 4 views
0

Ich habe eine Liste der ‚Wörter‘ ich untermehrspaltigen Pandas auf mehreren Kriterien Zählen basierend

word_list = ['one','two','three'] 

zählen möchten Und ich habe eine Spalte innerhalb Pandas Datenrahmen mit Text.

TEXT          | USER | ID 
-------------------------------------------|---------|------ 
"Perhaps she'll be the one for me."  | User 1 | 100 
"Is it two or one?"      | User 1 | 100 
"Mayhaps it be three afterall..."   | User 2 | 150 
"Three times and it's a charm."   | User 2 | 150 
"One fish, two fish, red fish, blue fish." | User 2 | 150 
"There's only one cat in the hat."   | User 3 | 200 
"One does not simply code into pandas." | User 3 | 200 
"Two nights later..."      | User 1 | 100 
"Quoth the Raven... nevermore."   | User 2 | 150 

Die gewünschte Ausgabe, die Ich mag würde, ist die folgende unten, wo ich die Anzahl der Unique User zählen möchten, die Text zu jedem Wort in word_list bezogen hat, die Daten in der Spalte „Text“ gefunden werden. Nach dem Zählen der eindeutigen Benutzer möchte ich auch die Summe der Follower für jeden Tweet zählen, die mit der eindeutigen Benutzeranzahl des Worts verknüpft sind.

Word | Unique User Count | ID Sum 
one |  3   | 450 
two |  2   | 250 
three|  1   | 150 

Gibt es eine Möglichkeit, dies in Python 2.7 zu tun?

Antwort

1

breche ich zusammen die Schritte

df.columns=['TEXT','USER','ID'] 

df[word_list]=df.TEXT.str.lower().apply(lambda x : pd.Series([x.find(y) for y in word_list])).ne(-1) 
df1=df[['USER','one','two','three','ID']].set_index(['USER','ID']).astype(int).replace({0:np.nan}) 
Target=df1.stack().reset_index().groupby('level_2').agg({'USER':lambda x : len(set(x)),'ID':lambda x : sum(set(x))}) 
Target=Target.reset_index() 
Target.columns=['Word','Unique User Count','ID Sum'] 
Target 
Out[97]: 
    Word Unique User Count ID Sum 
0 one     3  450 
1 three     1  150 
2 two     2  250 
+0

Zeile 3: KeyError: 'LEVEL_2' – Leggerless

+0

@Leggerless fügen Sie diese in den Anfangs df.columns = [ 'TEXT', 'User', 'ID'], Ihre Spalte name contain blank – Wen

+0

@Leggerless 'df1.stack(). reset_index()' gib dies ein, zeig mir deinen Spaltennamen – Wen

Verwandte Themen