此处的新手程序员正在寻求帮助。我有一个看起来像这样的数据框:
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"
如何获得所需的输出?
答案 0 :(得分:2)
这将从所有字符串中提取第一个现金标签:
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 :(得分:1)
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