如何删除python中没有数字的数据帧中的单元格?

时间:2018-12-06 13:55:49

标签: python pandas dataframe

如何在python中删除数据框中没有数字的单元格?

我正在尝试从DataFarme中删除仅包含字符的单元格

enter image description here

我要删除Farnet等单元格并将其设置为空。

实际上,我检查了诸如this 之类的某些链接,但由于我想操纵细胞而无法回答我的问题

3 个答案:

答案 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()

我希望这会有所帮助。