2016-06-27 5 views
1

Ich versuche, alle #keywords aus der tweetText in eine separate Spalte zusammen mit anderen Spalten zu setzen. Andere Spalten habe ich nicht erwähnt, da sie nur Verwirrung stiften würden.Parse Eingabe und Struktur der Ausgabe # Schlüsselwörter aus Tweets

Die tweetText, die nicht #keywords hat, wird gelöscht, und diejenigen, die haben, sollen herausgefischt und in eine andere Spalte gestellt werden.

Ich bin irgendwie in dem Teil verloren, wo ich die #Keywords von der tweetText filtern muss.

Input: TweetsID, Tweets (hat viel mehr Spalten)

714602054988275712,I'm at MK Appartaments in Dobele 
714600471512670212,"Baana bicycle counter.Today: 9 Same time last week: 7 Trend: ↑28% This year: 60 811 Last year: 802 079 #Helsinki #pyöräily #cycling" 
714598616703320065,"Just posted a photo @ Moscow, Russia" 
714593900053180416,We're #hiring! Read about our latest #job opening here: CRM Specialist #lifeinspiringcareers #Moscow #Sales 
714591942949138434,Just posted a photo @ Kfc 
714591380660731904,Homeless guide on my festival of tours from locals for locals #открытаякарта. Shot by Alexandr 
714591338977579009,"Who we are? #edmonton #edm #edmlife #edms #edmlifestyle #edmfamily #edmgirls #edmlov" 

Erwartete Ausgabe: tweetId, HashKey (werden andere Spalten zu)

714600471512670212,#Helsinki #pyöräily #cycling 
714593900053180416,#hiring! #lifeinspiringcareers #Moscow #Sales 
714591380660731904,#открытаякарта 
714591338977579009,#edmonton #edm #edmlife #edms #edmlifestyle #edmfamily #edmgirls #edmlov" 

Code:

import pandas as pd 

df1 = pd.read_csv('Turkey_28.csv') 

key_word = df1[['tweetID', 'tweetText']].set_index('tweetID')['tweetText'] 

key_word = key_word.dropna().apply(lambda x: eval(x)) 
key_word = key_word[key_word.apply(type) == dict] 

#I am lost in this section on how to select the hash keywords? 
def get_key_words(x):              
    return pd.Series(x['tweetText'], 

key_word = key_word.apply(get_key_word) 

df2 = pd.concat([coords, df1.set_index('tweetID').reindex(coords.index)], axis=1) 

df2.to_csv('Turkey_key_word.csv', index=True) 

Schätzen Sie die Vorschläge.

bearbeiten One:

Wenn analysiert Eingang in die gewählte Antwort erhalte ich einige Syntaxfehler

Code:

import re 
import pandas as pd 

df = pd.readcsv('Turkey_Text.csv') 
tweet_column = ['tweetText'] 
for idx in range(len(tweet_column)): 
    tweet = tweet_column[idx] 
    hashtag_list = re.findall(r('#\w+)', tweet) 
    tweet_column[idx] = " ".join(hashtag_list) 

print tweet_column[idx] 

Fehler:

File "keyword_split.py", line 9 
    tweet_column[idx] = " ".join(hashtag_list) 
      ^
SyntaxError: invalid syntax 

Erwartete Ausgabe

714600471512670212,#Helsinki 
714600471512670212,#pyöräily 
714600471512670212,#cycling 
714593900053180416,#hiring! 
714593900053180416,#lifeinspiringcareers 
714593900053180416,#Moscow 
714593900053180416,#Sales 
714591380660731904,#открытаякарта 
714591338977579009,#edmonton 
714591338977579009,#edm 
714591338977579009,#edmlife 
714591338977579009,#edms 
714591338977579009,#edmlifestyle 
714591338977579009,#edmfamily 
714591338977579009,#edmgirls 
714591338977579009,#edmlov" 

Antwort

1

Verwenden Sie python and regular expressions. Es wird dein Leben viel einfacher machen. Der reguläre Ausdruck r'#(\w+)' würde in diesem Fall gut funktionieren.

Ich verstehe nicht vollständig den Fluss Ihres Codes, da ich nicht viel Erfahrung mit der Suche nach CSVs mit Panda habe, aber wenn Sie den Tweet isolieren und eine Zeichenfolge/Hashtags an diese Spalte zurückgeben würden durch mein Verständnis von herkömmlicher python Logik, könnte es etwa so aussehen ...

import re 

for idx in range(len(tweet_column)): 
    tweet = tweet_column[idx] 
    hashtag_list = re.findall(r('#\w+)', tweet) 
    tweet_column[idx] = " ".join(hashtag_list) 

Here's another example

+0

Dank .. ich nicht streng bin mit nur Pandas verwenden, nur, dass es Header die Spalten zu identifizieren. Der vollständige Datensatz hat ungefähr 20 Spalten und ich nehme an, dass es in reinem Python sehr verwirrend sein würde. Wenn Sie mit möglichem passendem Code helfen können. Das wäre großartig. –

+1

Sorry, im Moment habe ich nicht genug Erfahrung mit Lambda-Ausdrücken, um Ihnen in meiner Freizeit zu helfen. Vielleicht wird jemand anderes mitkommen und helfen. – turtlefranklin

+1

In der Zwischenzeit Kasse die Ressourcen, die ich verlinkt, um zu sehen, ob Sie es selbst ausprobieren können – turtlefranklin