【发布时间】:2021-09-14 11:48:13
【问题描述】:
我有一个如下所示的数据框
df = pd.DataFrame({'subject_id': [101,102,103,201,202],
'test_id':['A1:123,A25668','B1:TEST,B2456,B3#123','B3:456','B3:678,C1:345','C2:367,C3']})
目前,我想验证数据框中的选定列是否符合质量标准
a) 列不应包含重复项
b) 列不应包含缺失值
c) 列应仅包含数字/整数值。应该没有字符串/浮点值
所以,我尝试了以下质量检查
q_1 = np.where(df['subject_id'].isna(),"No","Yes")
q_2 = np.where(df['subject_id'].duplicated(keep=False),"No","Yes")
q_3 = np.where(df['subject_id'].str.isdigit(),"Yes", "No") #but this throws error due int64.
q_4 = np.where(df['test_id'].isna(),"No","Yes")
q_5 = np.where(df['test_id'].duplicated(keep=False),"No","Yes")
q_6 = np.where(df['test_id'].str.isdigit(),"Yes", "No") #but this throws error due int64.
如何在数据框中的不同列中优雅高效地执行此操作?你可以看到我为不同的列多次重复同一行代码
如何验证 subject_id 是否仅包含整数而不包含字符串/浮点数?我想逐行检查。
【问题讨论】:
-
目标在某些方面不清楚。您是否需要 6 个变量来存储这些信息?
-
@HenryEcker,是的。正确..但是我必须为此编写 6 行代码吗?试图了解是否有任何 python 方法可以有效地做到这一点
标签: python pandas dataframe numpy pandas-groupby