我有一个在所有列中都包含关键字和值的数据框。请参见下面的示例。
我想将正则表达式应用于所有列。所以我使用for循环并应用正则表达式:
for i in range (1,maxExtended_Keywords):
temp = 'extdkey_' + str(i)
Extended_Keywords[temp] = Extended_Keywords[temp].str.extract(":(.*)",expand=True)
我得到了期望的最终结果。那里没有问题。
但是,只是古玩才有一种将正则表达式应用到整个数据帧的Python方法,而不是使用for循环和逐列应用。
谢谢,
使用pandas.DataFrame.replace
与regex=True
df.replace('^.*:\s*(.*)', r'\1', regex=True)
请注意,我的模式使用括号捕获后面的部分,':'
并使用原始字符串r'\1'
引用该捕获组。
df = pd.DataFrame([
[np.nan, 'thing1: hello'],
['thing2: world', np.nan]
], columns=['extdkey1', 'extdkey2'])
df
extdkey1 extdkey2
0 NaN thing1: hello
1 thing2: world NaN
df.replace('^.*:\s*(.*)', r'\1', regex=True)
extdkey1 extdkey2
0 NaN hello
1 world NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句