2016-01-27 3 views
0

У меня есть dataFrame DF1:Как создать новый `DataFrame` со значениями, полученными от другого?

|Company Name|Contact| Representatives | 
    | XYZ-Corp |Adam | Mark, John, Stacy | 

Я хочу, чтобы создать новый dataFrame df2 который выглядит следующим образом:

| Company Name | Contact | 
    | XYZ-Corp  | Adam  | 
    | XYZ-Corp  | Mark  | 
    | XYZ-Corp  | John  | 
    | XYZ-Corp  | Stacy | 

Как мне это сделать? Я хочу разбить значения из столбца представителей и добавить его в виде новых строк.

Я могу использовать цикл double for, один для итерации по всем строкам, а другой для повторения имен представителей и добавления в новый dataFrame. Есть лучший способ сделать это?

ответ

1
df.set_index('Company Name', inplace=True) 
df = pd.concat([df.Contact, df.loc[:,'Representatives'].str.split(',', expand=True).stack().reset_index(-1, drop=True)]).reset_index() 
df.rename(columns={0: 'Contact'}, inplace=True) 

    Company Name Contact 
0 XYZ-Corp  Adam 
1 XYZ-Corp  Mark 
2 XYZ-Corp  John 
3 XYZ-Corp  Stacy 
+0

Это работает как шарм, вы можете объяснить код? Я хотел бы узнать, как это работает. –

+0

Он разбивает имена на ',' и расширяет результат по одному столбцу. «Stack» поворачивает столбцы в строки и затем объединяет их под контактами. Свойство reset_index в основном очищается. Все команды подробно описаны в документах pandas. – Stefan

Смежные вопросы