【发布时间】:2021-09-03 13:17:51
【问题描述】:
我正在尝试编写一个脚本(参见下面的代码)来检查“手机号码”列中的任何值是否超过 11 的长度。如果有,则打印该值的索引并删除数据框中该索引的整个记录。但是,程序没有正确执行这行代码:if len(data['Mobile Phone Number']) > 11:,即使满足条件?我需要删除两个超过11 长度的电话号码。
import pandas as pd
data = {
'Name': [
'Tom',
'Joseph',
'Krish',
'John'
],
'Mobile Phone Number': [
13805647925,
145792860326480,
184629730518469,
18218706491
]
}
df = pd.DataFrame(data)
print(df)
for i in range(len(data)):
if len(data['Mobile Phone Number']) > 11:
print('Number at index ', i, 'is incorrect')
data = data.drop(['Mobile Phone Number'][i], axis=1)
else:
print('\nNo length of > 11 found in Mobile Phone Numbers')
这是上面代码的输出:
Name Mobile Phone Number
0 Tom 13805647925
1 Joseph 145792860326480
2 Krish 184629730518469
3 John 18218706491
No length of > 11 found in Mobile Phone Numbers
No length of > 11 found in Mobile Phone Numbers
【问题讨论】:
-
len(data['Mobile Phone Number'])确实返回您的列中有多少电话号码,而不是它们的长度 -
您的示例可能是错误的,因为如果您的电话号码前导为 0,您将丢失该号码,因为您的列的 dtype 是“int”(在我的国家就是这种情况)。
-
另外,您正在对字典 (
data) 进行操作,我想您应该改用数据框 (df)。 -
手机号码在你的DataFrame中应该是字符串还是数字?
-
@accdias,谢谢!好地方!