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

how can i assert all values in a column have specific length in pandas?

我想编写断言语句来检查列 '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])

我认为您需要 Series.str.len with all for check if all values of column has length 12, for general solution is added Series.astype 才能转换为字符串:

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

您可以使用 pandas.Series.apply and pandas.Series.all

直接应用 len 函数,而不是 lambda
assert (df.client_id.apply(len) == 12).all(),"Error message"

如果你想要一个实际的断言,运行:

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

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