[英]Python: split multiple lines of a row into single (individual) rows
我有一個包含公司和人員名稱的數據框。 例如,在同一行中,第一列中的公司名稱,第二列中的人名稱是公司的一部分(每行一個名稱)。 每個公司的人數各不相同,我有100多家公司。
這是數據集的示例:
Company name DM Full name
LA CAMPAGNOLA SA Mr Victor Daniel Martin
Mr Fernando Luis Falco
Mr Gustavo Pablo Macchi
Mr Marcelo Dario Siano
INVERSORA ELECTRICA S.A. Mr Luis Pablo Rogelio Pagano
Mr Damian Eduardo Sanfilippo
Mr Sebastian Cordova Moyano
Ms Sylvina Gabriela Sanchez
Mr Luis Rodolfo Secco
Mr Jaime Javier Barba
我需要創建一個新的數據框,其中每一行都是一個獨立的項目,其中包括公司名稱和員工名稱,如下所示:
Company name DM Full name
LA CAMPAGNOLA SA Victor Daniel Martin
LA CAMPAGNOLA SA Fernando Luis Falco
LA CAMPAGNOLA SA Gustavo Pablo Macchi
LA CAMPAGNOLA SA Marcelo Dario Siano
INVERSORA ELECTRICA S.A. Luis Pablo Rogelio Pagano
INVERSORA ELECTRICA S.A. Damian Eduardo Sanfilippo
INVERSORA ELECTRICA S.A. Sebastian Cordova Moyano
INVERSORA ELECTRICA S.A. Sylvina Gabriela Sanchez
INVERSORA ELECTRICA S.A. Luis Rodolfo Secco
INVERSORA ELECTRICA S.A. Jaime Javier Barba
我已經找到了不同的示例作為實現方法,但是它們都不起作用。 例如: 在pandas數據框中將單元格拆分為多行
有人可以幫我怎么做嗎?
看起來公司名稱在索引中,要將此列顯示為列,可以嘗試運行:
df = df.reset_index()
如果不是這種情況,請嘗試創建一個小的可復制示例
編輯:從您的評論來看,我不是100%清楚,但我認為您的公司名稱列中的每個人都是空字符串?
在這種情況下,請先用空格替換空白字符串,然后再進行填充。
df = df.replace(r'^\s+$', np.nan, regex=True)
df["Company name"] = df["Company name"].fillna(method="ffill")
我設法解決了這個問題:
colNames = ('Company name','DM Full name')
# Define a dataframe with the required column names
masterDF = pd.DataFrame(columns = colNames)
for i in range (0, len(df)):
names=df[df.columns[1]][i]
names=names.splitlines()
for name in names:
count+=1
if name.replace(' ','').isalpha():
name=name.replace('Mr ','').replace('Ms ','')
company=df[df.columns[0]][i]
company=company.replace('\n',' ')
else:
pass
a = str(company)
b = str(name)
masterDF = masterDF.append({'Company name': a, 'DM Full name': b}, ignore_index=True)
print masterDF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.