2016-09-14 6 views
2

Ich versuche, die Ergebnisse, die ich von regex bekommen zu nehmen, das heißteinfügen Werte von For-Schleife in Pandas Spalte

['11J'] 
['4C'] 
['5,'] 
[] 
['04 ', '05 ', '48T'] 

und speichern diese Werte in einer neuen Spalte (d Apt) eines bestehenden Pandas Datenrahmen.

Beispieldaten (Excel-Datei)

index id   apt  address   job description 
0  122092476  207  EAST 74 STREET blah blah 11J blah    
1  122096043  2092 8TH AVENUE  blah 4C blah blah 

-Code

import pandas as pd 
import re 

df = pd.read_excel('/Users/abc/Desktop/Apartment.xlsx', sheetname=0) 
df['Apt'] = 'None' 
top5 = df.head() 
t5jobs = top5['Job Description']  

d = [] 

for index, job in enumerate(t5jobs): 
    result = re.findall(r'\d\d\D', job) or re.findall(r'\d\D', job) or re.findall(r'PH\D', job) 

#print(str(result)) 
d.append(str(result)) 

df2 = pd.DataFrame([[d]], columns=list('Apt')) 
df.append(df2) 

Ich erhalte diese Fehlermeldung:

AssertionError: 3 columns passed, passed data had 1 columns 

Wie kann ich diese Werte in der Apt-Spalte eingefügt erhalten (überschreiben Keine)?

gewünschte Ausgabe:

index id   apt  address   job description   apt 
0  122092476  207  EAST 74 STREET blah blah 11J blah  11J   
1  122096043  2092 8TH AVENUE  blah 4C blah blah  4C 
+2

ich nicht verstehe deine Frage. Können Sie Ihre Frage so bearbeiten, dass sie ein [MCVE] (http://stackoverflow.com/help/mcve) enthält? – Kartik

+1

ersetzen: 'Spalten = Liste ('Apt')' -> 'Spalten = ['Apt']' – MaxU

+2

'Spalten = Liste ('Apt')' Dies bedeutet drei Spalten: '['A', 'p' , 't'] ' – ayhan

Antwort

2

dies versuchen (für Pandas 0.18.0+):

In [11]: df['Apt'] = df['job description'].str.extract(r'\b(\d{1,2}\D)\b', expand=True) 

In [12]: df 
Out[12]: 
       id apt   address  job description Apt 
index 
0  122092476 207 EAST 74 STREET blah blah 11J blah 11J 
1  122096043 2092  8TH AVENUE blah 4C blah blah 4C 

für Pandas Versionen < 0.18.0:

df['Apt'] = df['job description'].str.extract(r'\b(\d{1,2}\D)\b') 
+0

df ['Apt'] = df ['Jobbeschreibung']. Str.extract (r '\ b (\ d {1,2} \ D) \ b', expand = Wahr) TypeError: extract() get ein unerwartetes Schlüsselwort Argument "erweitern" – user3062459

+0

@ user3062459, was ist Ihre Pandas-Version? – MaxU

+0

Pandas Version .. Pandas == 0.17.1 – user3062459

Verwandte Themen