我试图找出如何根据pandas
中列A
的regex
有条件地将每行的子字符串添加到列B
。你知道吗
假设我有这个数据帧:
df = pd.DataFrame(["BULL APPLE X2","BEAR APPLE X3","BULL GOOG 2X",
"BEAR GOOG 3X", "BULL TSLA", "BEAR TSLA"], columns=["A"])
期望输出:
A B
"BULL APPLE X2" "+200"
"BEAR APPLE X3" "-300"
"BULL GOOG 2x" "+200"
"BEAR GOOG 3x" "-300"
"BULL TSLA" "+100"
"BEAR TSLA" "-100"
因此,如果A
包含"X2"
,则将"2"
与regex
合并,在"+"
之前和"00"
之后添加B
。你知道吗
如果它不包含Xn
或nX
,则插入"1"
。你知道吗
目前,我这样做是为了得到数字:
df["B"] = df["A"].str.extract(r"\sX(\d+)\s)", flags=re.IGNORECASE)
(仅适用于Xn
,不适用于nX
)。你知道吗
从那以后,我必须根据是否需要在"+"
或"-"
和"00"
中添加B
A
包含BULL
或BEAR
。你知道吗
如果你总是让X跟一些数字:
我有一个正则表达式的解决方案,但它是丑陋的,取决于您的数据,然后分裂可以做的工作:
输出:
除非在字符串末尾有其他由小写和大写x组成的单词,或者只有数字,否则从字符串末尾拆分一次,并检查剥离后是否有数字
相关问题 更多 >
编程相关推荐