Фрейм данных, значение нескольких ячеек - PullRequest
0 голосов
/ 05 июня 2018

Мне нужна помощь с пандами данных.У меня есть датафрейм со следующими столбцами:

Surname, project, project_type, city, value

Ячейки в столбцах «проект» и «город» имеют более одного значения, разделенных символом «/».Максимальное количество значений в таких ячейках может быть переменным.Для каждой такой строки (с кратными значениями внутри ячейки) мне нужно разложить ее на отдельные строки с одним значением в столбцах проекта и города.Остальные значения в других столбцах остаются прежними.

"Surname"; "project";   "Project_type"; "City";  "value"
  • Smith;PR_A / PR_B;L;Lon / NY / LA;10000
  • Джонсон;PR_A;S;Париж / Торонто;8000
  • Солнечный свет;PR_C / PR_A / PR_B;L;Lon / NY / LA / Торонто;17000
  • Арчибальд;PR_D;S;LA;6000 .....

У кого-нибудь есть идеи?Если число значений постоянное, это не доставит мне неприятностей, но, боюсь, это сложная задача.

1 Ответ

0 голосов
/ 05 июня 2018

Я считаю, что нужно product, но сначала разделить значения на /:

from  itertools import product
a=pd.DataFrame([j for i in df.apply(lambda x: x.str.split('/')).values for j in product(*i)],
                  columns=df.columns)
print (a)
      Surname project Project_type     City   value
0       Smith    PR_A            L      Lon  10,000
1       Smith    PR_A            L       NY  10,000
2       Smith    PR_A            L       LA  10,000
3       Smith    PR_B            L      Lon  10,000
4       Smith    PR_B            L       NY  10,000
5       Smith    PR_B            L       LA  10,000
6     Johnson    PR_A            S    Paris   8,000
7     Johnson    PR_A            S  Toronto   8,000
8    Sunshine    PR_C            L      Lon  17,000
9    Sunshine    PR_C            L       NY  17,000
10   Sunshine    PR_C            L       LA  17,000
11   Sunshine    PR_C            L  Toronto  17,000
12   Sunshine    PR_A            L      Lon  17,000
13   Sunshine    PR_A            L       NY  17,000
14   Sunshine    PR_A            L       LA  17,000
15   Sunshine    PR_A            L  Toronto  17,000
16   Sunshine    PR_B            L      Lon  17,000
17   Sunshine    PR_B            L       NY  17,000
18   Sunshine    PR_B            L       LA  17,000
19   Sunshine    PR_B            L  Toronto  17,000
20  Archibald    PR_D            S       LA   6,000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...