python - 如何使用 for-looped print() 结果在 pandas 的数据框中填充新列?
问题描述
我创建了以下代码来将 df 的 phone_number 列连接到验证电话号码有效性的 api(使用“numverify”):
import urllib.parse
import requests
main_api = 'http://apilayer.net/api/validate?access_key=xxxx&'
number = file.phone_number
for n in number:
phonenumber = urllib.parse.urlencode({'number': n})
url = main_api + phonenumber + '&country_code=&format=1'
numverify_data = requests.get(url).json()
numverify_validity = numverify_data['valid']
print(numverify_validity)
结果将是数据框中每个电话号码的 json 中的几个真假值。
我尝试用
file['numverify_validity'] = print(numverify_validity)
或者
file['numverify_validity'] = numverify_validity
但新列与打印结果不一致。
关于问题是什么的任何想法?
而且,如果您有其他验证电话号码的方法,那就太好了:)
ps 这是我在这里提出的第一个问题,所以如果您认为我使用的格式不方便,请告诉我。
解决方案
给定一个数据框file
,您可以定义一个验证函数并将apply
其添加到number
列中:
def verify_number(n):
phonenumber = urllib.parse.urlencode({'number': n})
url = main_api + phonenumber + '&country_code=&format=1'
numverify_data = requests.get(url).json()
return numverify_data['valid']
file['numverify_validity'] = file.number.apply(verify_number)
可以使用
phonenumbers
(Google 的 libphonenumber 库的 Python 端口)进行离线电话号码验证:
import pandas as pd
import phonenumbers as pn
file = pd.DataFrame({'number': ['+442083661177', '+12001230101']})
file['numverify_validity'] = file.number.apply(lambda x: pn.is_valid_number(pn.parse(x)))
结果:
number numverify_validity
0 +442083661177 True
1 +12001230101 False
根据评论中的要求更新输入验证:
import phonenumbers as pn
while True:
try:
number = input('Phone number: ')
if not pn.is_valid_number(pn.parse(number)):
raise pn.NumberParseException(None, 'invalid number')
break
except pn.NumberParseException:
print('Please enter a valid phone number.')
print(number)
推荐阅读
- php - PHP设置权限和删除文件夹-文件
- r - 线性回归 - 使用预测时未找到对象
- django - 覆盖 Django 中模型的批量删除
- kotlin - 如何在 Kotlin 中使用 getInstance?
- symfony - Symfony 4 "code": 401, "message": "Invalid credentials." jwt认证错误
- python - 按索引/编号选择目录中的文件
- google-visualization - hideColumns 和 getVIewColumns 与谷歌图表
- postgresql - 检查元素是否是没有键的 JSON 数组的一部分
- python - Sikuli 脚本随机停止
- python - 如何对角镜像 NxNx3 numpy 数组