我想清除下面的Pandas数据框列,但是要用一个有效的语句,而不是我在下面的代码中尝试实现的方法。
输入:
string
0 ['string', '#string']
1 ['#string']
2 []
输出:
string
0 string, #string
1 #string
2 NaN
码:
import pandas as pd
import numpy as np
d = {"string": ["['string', '#string']", "['#string']", "[]"]}
df = pd.DataFrame(d)
df['string'] = df['string'].astype(str).str.strip('[]')
df['string'] = df['string'].replace("\'", "", regex=True)
df['string'] = df['string'].replace(r'^\s*$', np.nan, regex=True)
print(df)
您可以使用
df['string'] = df['string'].astype(str).str.replace(r"^[][\s]*$|(^\[+|\]+$|')", lambda m: '' if m.group(1) else np.nan)
详细资料:
^[][\s]*$
-一个字符串,仅由零个或多个匹配[
,]
或空格字符|
- 要么(^\[+|\]+$|')
-[
在字符串开始处捕获一个或多个字符,或者]
在字符串末尾捕获一个或多个字符或任何字符,将其分组为第1组'
。如果组1匹配,则替换为空字符串(匹配项已删除),否则,替换为np.nan
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句