DataFrame: создание нового столбца на основе слов в другом столбце - PullRequest
2 голосов
/ 31 октября 2019

Начинающий программист здесь ищет помощи. У меня есть датафрейм, который выглядит следующим образом:

       Message  
0  "Blah blah $AAPL"
1  "Blah blah $ABT"      
2  "Blah blah $amzn"     
3  "Blah blah $AMZN"
4  "Blah blah $KO"
5  "Blah blah $fb"
6  "Blah blah $GOOGL"
7  "Blah blah $BA"    
8  "Blah blah $BMY"   

Мой желаемый вывод - это новый столбец, который дает мне Cashtag, используемый в твите, независимо от того, является ли он прописным или строчным. В этом примере это будет:

       Message            Cashtag
0  "Blah blah $AAPL"      "$AAPL"
1  "Blah blah $ABT"       "$ABT"
2  "Blah blah $amzn"      "$AMZN"
3  "Blah blah $AMZN"      "$AMZN"
4  "Blah blah $KO"        "$KO"
5  "Blah blah $fb"        "$FB"
6  "Blah blah $GOOGL"     "$GOOGL"
7  "Blah blah $ba"        "$BA"   
8  "Blah blah $BMY"       "$BMY" 

Как мне достичь желаемого результата?

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Это вытянет первый денежный тег из любой строки:

df['Cashtag'] = df['Message'].str.extract(r'(\$[A-Za-z]{1,4})', expand=False)

Проверьте документы на Series.str.extract .

Еще лучше, такВы можете сгруппировать их по денежным меткам позже, я бы рекомендовал также преобразовать их в верхний регистр:

df['Cashtag'] = df['Message'].str.extract(r'(\$[A-Za-z]{1,4})', expand=False).str.upper()
1 голос
/ 31 октября 2019

IIUC,

df['Cashtag'] = df['Message'].str.upper().str.extract('(\$\w+)')
print(df)




              Message    Cashtag
0   0  "Blah blah $AAPL"   $AAPL
1    1  "Blah blah $ABT"    $ABT
2   2  "Blah blah $amzn"   $AMZN
3   3  "Blah blah $AMZN"   $AMZN
4     4  "Blah blah $KO"     $KO
5     5  "Blah blah $fb"     $FB
6  6  "Blah blah $GOOGL"  $GOOGL
7     7  "Blah blah $BA"     $BA
8    8  "Blah blah $BMY"    $BMY
...