我有一堆字符串,如:
Bought MSFT@Arca ABCD
Bought Yahoo@Nasdaq
Sold Google@Nasdaq ABCD
我想为所有字符串创建一个ABCD数据帧。
所以期望的数据框应该是这样的:
ACBD
NaN
ABCD
如何使用正则表达式首先解析字符串?我尝试(ABCD|)
,但返回空白。
答案 0 :(得分:1)
整个片段:
import pandas as pd, numpy as np
string = """Bought MSFT@Arca ABCD
Bought Yahoo@Nasdaq
Sold Google@Nasdaq ABCD"""
needle = 'ABCD'
def search(line):
return needle if line.endswith(needle) else np.nan
df = pd.DataFrame((search(line) for line in string.split("\n")))
print(df)
这会使用.endswith()
,一个函数search()
和一个列表理解,并会产生
0
0 ABCD
1 NaN
2 ABCD
使用lambda函数更短:
df = pd.DataFrame(map(lambda x: needle if x.endswith(needle) else np.nan, string.split("\n")))
print(df)
对于更个性化的解决方案,您需要详细说明实际的输入字符串。