Python 如何使用pandas中的正则表达式在混合数据的df列中查找数字
您知道如何转换此代码以获得更快的代码吗? 在这段代码中,我只想取数字(十进制或整数),并拒绝列中的单词。事实上,在a栏我可以找到数字和单词。谢谢Python 如何使用pandas中的正则表达式在混合数据的df列中查找数字,python,pandas,Python,Pandas,您知道如何转换此代码以获得更快的代码吗? 在这段代码中,我只想取数字(十进制或整数),并拒绝列中的单词。事实上,在a栏我可以找到数字和单词。谢谢 a=['a', '9','4.5','nnn', '3.4543', '2'] c=[1,10,5,4,4,7] df=pd.DataFrame(a,c) b =pd.Series(np.zeros(len(df)), name='b', index=df.index) i = 0 for row in df.a:
a=['a', '9','4.5','nnn', '3.4543', '2'] c=[1,10,5,4,4,7]
df=pd.DataFrame(a,c)
b =pd.Series(np.zeros(len(df)), name='b', index=df.index)
i = 0
for row in df.a:
if re.findall(r'(\d+[.]\d+)', str(row)):
b.loc[i] = re.search(r'(\d+[.]\d+)', str(row)).group()
elif re.findall(r'(\b\d+\b)', str(row)):
b.loc[i] = re.search(r'(\b\d+\b)', str(row)).group()
else:
b.loc[i] = '9999'
i = i + 1
for i in range(len(b)):
b.loc[i]=float(b.loc[i])
df.a = b
我想获得a=[9999,9,4.59999,3.4543,2]使用应用和分配函数创建新列: 进口稀土
regnumber = re.compile(r'\d+(?:,\d*)?')
a=['a', '9','4.5','nnn', '3.4543', '2']
c=[1,10,5,4,4,7]
df=pd.DataFrame({'a':a,'c':c})
df = df.assign(
a = lambda x: x['a'].apply(lambda s: s if regnumber.match(s) else 9999)
)
print(df)
a c
9999 1
9 10
4.5 5
9999 4
3.4543 4
2 7
如果你用你的预期输出显示你的数据样本,我们可以提供一个解决方案。例如:a=['a','9','4.5','nnn','3.4543','2']c=[1,10,5,4,4,4,7]df=pd.DataFrame(a,c)我想获得a=[9999,9,4.59999,3.4543,2]请将其添加到你的主要帖子中