DataFrame:根据另一列中的单词创建新列
DataFrame: Creating a new column based on words in another Column
新手程序员在这里寻求帮助。我有一个看起来像这样的数据框:
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"
我怎样才能达到我想要的输出?
这将从任何字符串中提取第一个现金标签:
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()
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
新手程序员在这里寻求帮助。我有一个看起来像这样的数据框:
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"
我怎样才能达到我想要的输出?
这将从任何字符串中提取第一个现金标签:
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()
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