python 2.7中的正则表达式,用于标识数据框中列中的任何非数字符
发布时间:2020-12-20 13:49:55 所属栏目:Python 来源:网络整理
导读:我在 python中清理数据.数据框中的某些列应为数字.但是这些列中有一些行包含可以是?,或/或任何其他非数字符号的字符串.我想创建一个布尔列,如果所选列的值不是数字,则等于1,否则为0.我是python的新手,我不确定非值的正则表达式是什么. 我需要提到的一件事是
我在
python中清理数据.数据框中的某些列应为数字.但是这些列中有一些行包含可以是?,或/或任何其他非数字符号的字符串.我想创建一个布尔列,如果所选列的值不是数字,则等于1,否则为0.我是python的新手,我不确定非值的正则表达式是什么.
我需要提到的一件事是,由于列c包含非数值,因此它被读作对象,而不是字符串或数字. 样本输入 a b c d 1 10 20 30 40 2 10/20 30 ? 50 此输入读取为数据帧,称为df. a b c d e 1 10 20 30 40 0 2 10/20 30 ? 50 1 解决方法
不是熊猫专家,但你可以这样做:
import pandas as pd df = pd.read_csv("in.csv",delimiter="s+") df['e'] = df.applymap(lambda x: str(x).isdigit()).T.all().astype(int) 输入: a b c d 10 20 30 40 10/20 30 ? 50 3 4 5 6 输出: a b c d e 0 10 20 30 40 1 1 10/20 30 ? 50 0 2 3 4 5 6 1 如果行中没有混合类型,则可以执行以下操作: df['e'] = df.applymap(np.isreal).T.all().astype(int) 打破它: print(df.applymap(lambda x: str(x).isdigit())) 根据每个行元素是否为数字输出True或False: a b c d e 0 True True True True True 1 False True False True True 2 True True True True True 然后我们用.T转置: print(df.applymap(lambda x: str(x).isdigit()).T) 获得: 0 1 2 a True False True b True True True c True False True d True True True e True True True 然后.all返回True,如果每行的所有元素都为True: 0 True 1 False 2 True dtype: bool 最后.astype(int)输出: 0 1 1 0 2 1 dtype: int64 我们用它来创建新的col e. 这仅在您有正数位时才有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |