私は人の名前を並べ替えるスクリプトに取り組んでいます。私はcsvモジュールを使ってこれを使っていましたが、これはもっと大きなパンダプロジェクトに結びつくので、私はそれを変換すると思っていました。if ... python/pandasのelif文
1つの名前フィールドを最初、中間、最後のフィールドに分割する必要があります。元のフィールドには最初の名前があります。例:Richard Wayne Van Dyke。
私は名前を分割しましたが、 "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
は、私は苦労してる私のパンダベースのコードです:
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']
私は「という基本的な何かがあります私は行方不明です。
私はパンダを理解していませんが、パンダにデータを渡す前に作業を行う私のCSVコードを改訂しました。上記のcsvコードのように 'csv.reader'を使用する代わりに、' csv.DictReader'に変更しました。データを辞書に渡すことで、Nameフィールドのキー値ペアを使用してcsvコードを機能させることが容易になりました。 – mattrweaver