如何断言列中的所有值都具有特定的长度?

2024-09-19 23:37:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个断言语句来检查列'client_id'的具体长度是否为12

assert kcell[ kcell['client_id'].apply(lambda id: len(id) == 12 ]

assert (kcell[ kcell['client_id'].apply(lambda id: len(id) == 12])

Tags: lambdaclientidlenassert断言语句apply
3条回答

我认为您需要使用^{}all来检查列的所有值是否都有长度12,因为一般解决方案是添加^{}来转换为字符串:

kcell = pd.DataFrame({'client_id':['012345678912','012345678912']})
print (kcell)
      client_id
0  012345678912
1  012345678912

assert (kcell['client_id'].astype(str).str.len() == 12).all(), 'client_id length is not 12'

kcell = pd.DataFrame({'client_id':['012345678912','012']})
print (kcell)
      client_id
0  012345678912
1           012

assert (kcell['client_id'].astype(str).str.len() == 12).all(), 'client_id length is not 12'

AssertionError: client_id length is not 12

如果需要实际的断言,请运行:

assert kcell.client_id.apply(lambda n: len(str(n))).eq(12).all(), 'client_id length always 12'

请注意,如果列是例如int类型,则kcell['client_id'].str.len() == 12将失败。 我的解决方案适用于intotstring

您可以使用^{}^{}直接应用len函数,而不是lambda

assert (df.client_id.apply(len) == 12).all(),"Error message"

相关问题 更多 >