如何在python中删除数据框中没有数字的单元格?
我正在尝试从DataFarme中删除仅包含字符的单元格
我要删除Farnet等单元格并将其设置为空。
实际上,我检查了诸如this 之类的某些链接,但由于我想操纵细胞而无法回答我的问题
答案 0 :(得分:2)
我相信您需要:
df = pd.DataFrame({0:['a','DT8510','AFT1',np.nan],
1:['a','DT8510','u','as1']})
print (df)
0 1
0 a a
1 DT8510 DT8510
2 AFT1 u
3 NaN as1
import re
d = re.compile('\d')
df = df.applymap(lambda x: x if d.search(str(x)) else np.nan)
print (df)
0 1
0 NaN NaN
1 DT8510 DT8510
2 AFT1 NaN
3 NaN as1
另一种解决方案:
df = df.where(df.apply(lambda x: x.astype(str).str.contains('\d')))
答案 1 :(得分:0)
@jezrael的类似解决方案
import pandas as pd
import numpy as np
df = pd.DataFrame(data={'A':['1','textonly'],'B':['textandnum2','2']})
for column in df.columns:
df[column][~df[column].str.contains('([1-9])')] = np.nan
df
答案 2 :(得分:0)
我认为您可以使用正则表达式查找没有数字的单元格。
^([^ 0-9] *)$表达式将查找所有没有数字的单元格。
df = df.replace(r'^([^0-9]*)$', np.nan, regex=True)
这将用NaN替换所有带有数字的单元格,然后您可以使用dropna删除单元格。
df = df.dropna()
我希望这会有所帮助。