【发布时间】:2015-09-06 13:20:23
【问题描述】:
我有这个pandas 数据框:
df = pd.DataFrame(["LONG AAPL 2X CBZ","SHORT GOOG 10X VON"], columns=["Name"])
我想在Name 列中识别"AAPL",将其传递给字典"AAPL":"Apple",然后将其插入到新列Description 的字符串中。
期望的输出:
Name Description
"LONG AAPL 2X CBZ" "Tracks Apple with 2X leverage."
"SHORT GOOG 10X VON" "Tracks Google with -10X leverage."
我遇到问题的部分是将变量子字符串输入另一个字符串"Tracks X with Y leverage."
如果我不必这样做,只需从 name 提取到 description 是可能的:
df["Description"] = df["Name"].str.extract(r"\s(\S+)\s").map({"AAPL":"Apple", "GOOG":"Google"})
或提取杠杆:
df["Description"] = df["Name"].str.extract(r"(\d+X)")
如果可能的话,我想使用regex 来提取变量,因为实际上我会做一些更详细的正则表达式,例如用于检索不同格式的乘数,例如X2、2x 等等。
注意:我可能需要设置另一列来告知杠杆是正还是负,并用它来决定是否在乘数前面附加"-"作为-10X leverage.
df["direction"] = df["name"].map(lambda x: "Long" if "LONG" in x else "Short" if "SHORT " in x else "Long")
Name Direction Description
"LONG AAPL 2X CBZ" "Long" "Tracks Apple with 2X leverage."
"SHORT GOOG 10X VON" "Short" "Tracks Google with -10X leverage."
【问题讨论】:
-
不应该是
"LONG AAPL 2X CBZ"吗? -
谢谢,更正了DataFrame。
标签: python regex string pandas