我如何断言列中的所有值在 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类型。
我的解决方案适用于 int 或 string 列。
我想编写断言语句来检查列 '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类型。
我的解决方案适用于 int 或 string 列。