Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 python/API中的if…elif语句_Python 2.7_If Statement_Pandas_Split - Fatal编程技术网

Python 2.7 python/API中的if…elif语句

Python 2.7 python/API中的if…elif语句,python-2.7,if-statement,pandas,split,Python 2.7,If Statement,Pandas,Split,我正在编写一个脚本,对人们的名字进行排序。我使用csv模块进行了这项工作,但由于这将与一个更大的熊猫项目相关联,我想我会转换它 我需要将单个名称字段拆分为第一个、中间个和最后一个字段。原始字段首先具有第一个名称。理查德·韦恩·范·戴克 我把名字分开了,但想让“Van Dyke”成为我的姓 以下是我的csv模块代码: with open('inputfil.csv') as inf: docs = csv.reader(inf) next(ccaddocs, None) f

我正在编写一个脚本,对人们的名字进行排序。我使用csv模块进行了这项工作,但由于这将与一个更大的熊猫项目相关联,我想我会转换它

我需要将单个名称字段拆分为第一个、中间个和最后一个字段。原始字段首先具有第一个名称。理查德·韦恩·范·戴克

我把名字分开了,但想让“Van Dyke”成为我的姓

以下是我的csv模块代码:

with open('inputfil.csv') as inf:
    docs = csv.reader(inf)
    next(ccaddocs, None)
    for i in docs:
        #print i
        fullname = i[1]#it's the second column in the input file
        namelist =fullname.split(' ') 
        firstname = namelist[0]
        middlename = namelist[1]
        if len(namelist) == 2:
            lastname = namelist[1]
            middlename = ''
        elif len(namelist) == 3:
            lastname = namelist[2]
        elif len(namelist) == 4:
            lastname = namelist[2] + " " + namelist[3] #gets Van Dyke in lastname
        print "First: " + firstname + " middle: " + middlename + " last: " + lastname
以下是我正在努力解决的基于pandas的代码:

    df = pd.DataFrame({'Name':['Richard Wayne Van Dyke','Gary Del Barco','Dave Allen Smith']})
df = df.fillna('')
df =df.astype(unicode)
splits = df['Name'].str.split(' ', expand=True)

df['firstName'] = splits[0]
if  splits[2].notnull and splits[3].isnull:#this works for Bret Allen Cardwell

    df['lastName'] = splits[2]
    df['middleName'] = splits[1]
    print "Case 1: First: " + df['firstName'] + " middle: " +df['middleName'] + " last: " + df['lastName']
elif splits[2].all() == 'Del':#trying to get last name of "Del Barco"
    print 'del'
    df['middleName'] = ''
    df['lastName'] = splits[2] + " " + splits[3]
    print "Case 2: First: " + df['firstName'] + " middle: " +df['middleName'] + " last: " + df['lastName']

elif splits[3].notnull: #trying to get last name of "Van Dyke"
    df['middleName'] = splits[1]
    df['lastName'] = splits[2] + " " + splits[3]
    print "Case 3: First: " + df['firstName'] + " middle: " +df['middleName'] + " last: " + df['lastName']

我缺少一些基本的东西

谢谢你的回复。我明白你的逻辑,但当我打印“lastnames”时,我得到:>>>01 2 3 2 Dave Allen Smith无>>>我不确定这里发生了什么。我希望看到一份姓氏列表。当我将lastnames更改为
splits[2]+splits[3]
时,我得到:>>>0 VanDyke 1 NaN 2 NaN数据类型:对象>>>您是否尝试过打印拆分以查看实际存在的内容?是:0 Richard 1 Gary 2 Dave姓名:0,数据类型:对象0 Wayne 1 Del 2 Allen姓名:1,数据类型:对象0 Van 1 Barco 2 Smith姓名:2,数据类型:对象0 Dyke 1 None 2 None姓名:3,数据类型:objectI尚未找到熊猫,但已修改了我的csv代码,该代码将在将数据传递给熊猫之前完成工作。我没有像上面的csv代码那样使用
csv.reader
,而是将其更改为
csv.DictReader
。通过将数据传递到字典,可以很容易地使用Name字段的键值对来获得csv代码。
if len(name) >= 3: # (assume that user only has one middle name)

  firstname = splits[0]
  middlename = splits[1]
  lastnames = splits[2:] ( catch all last names into a list )