我有两个通过csv读入的数据帧。数据帧一包括一个电话号码和一些附加数据。第二个数据帧包含国家代码和国家名称。在
我想从第一个数据集中获取电话号码,并将其与第二个数据集的国家代码进行比较。国家代码的长度可以在1到4位数之间。我从最长的国家代码到最短的国家代码。如果有匹配项,我想为电话号码指定国家名称。在
输入长列表:
phonenumber, add_info
34123425209, info1
92654321762, info2
12018883637, info3
6323450001, info4
496789521134, info5
输入国家/地区清单:
^{pr2}$输出应为:
phonenumber, add_info, country, order_info
34123425209, info1, Spain, 1
92654321762, info2, Pakistan, 4
12018883637, info3, USA, 2
6323450001, info4, Philippines, 3
496789521134, info5, Germany, 4
我就这样解决过一次:
#! /usr/bin/python
import csv
import pandas
with open ('longlist.csv','r') as lookuplist:
with open ('country_list.csv','r') as inputlist:
with open('Outputfile.csv', 'w') as outputlist:
reader = csv.reader(lookuplist, delimiter=',')
reader2 = csv.reader(inputlist, delimiter=';')
writer = csv.writer(outputlist, dialect='excel')
for i in reader2:
for xl in reader:
if xl[0].startswith(i[1]):
zeile = [xl[0], xl[1], i[0], i[1], i[2]]
writer.writerow(zeile)
lookuplist.seek(0)
但我想用熊猫来解决这个问题。我要做的是: -读取csv文件 -从“长列表”中删除重复项 -国家/国家代码的分类列表
我已经在做的是:
import pandas as pd, numpy as np
longlist = pd.read_csv('path/to/longlist.csv',
usecols=[2,3], names=['PHONENUMBER','ADD_INFO'])
country_list = pd.read_csv('path/to/country_list.csv',
sep=';', names=['COUNTRY','COUNTRY_CODE','ORDER_INFO'], skiprows=[0])
# remove duplicates and make phone number an index
longlist = longlist.drop_duplicates('PHONENUMBER')
longlist = longlist.set_index('PHONENUMBER')
# Sort country list, from high to low value and make country code an index
country_list=country_list.sort_values(by='COUNTRY_CODE', ascending=0)
country_list=country_list.set_index('COUNTRY_CODE')
(...)
longlist.to_csv('path/to/output.csv')
但是在数据集上尝试同样的方法都是行不通的。我不能应用startswith(不能迭代对象,也不能在对象上应用它)。我真的很感激你的帮助。在
我会这样做:
输出:
^{pr2}$说明:
在电话.csv:-我故意添加了一个巴哈马号码(
1242...
)和一个无效号码(00000000000
)相关问题 更多 >
编程相关推荐