У меня есть DataFrame
in pandas:
import pandas as pd
inp = [{'Name': 'John', 'Year':2018, 'Address':'112, Beverly hills, California, US'}, {'Name': 'Steve', 'Year':2018, 'Address':'220, Bolvard ave, NY, US'}, {'Name': 'Steve', 'Year':2019, 'Address':'Kilroy street, 5512, Toronto, Canada'}, {'Name': 'John', 'Year':2018, 'Address':'112, Beverly hills, California, US'}, {'Name': 'John', 'Year':2019, 'Address':'112, Beverly hills, California, US'}, {'Name': 'Steve', 'Year':2019, 'Address':'Kilroy street, 5512, Toronto, Canada'}, {'Name': 'John', 'Year':2019, 'Address':'Orange county, California, US'}, {'Name': 'Steve', 'Year':2019, 'Address':'Kilroy street, 5512, Toronto, Canada'}, {'Name': 'John', 'Year':2019, 'Address':'240, Manhattan, NY, US'}, {'Name': 'Kim', 'Year':2019, 'Address':'Kilroy street, 5512, Toronto, Canada'}, {'Name': 'Kim', 'Year':2019, 'Address':'112, Beverly hills, California, US'}, {'Name': 'Kim', 'Year':2019, 'Address':'220, Bolvard ave, NY, US'}]
df = pd.DataFrame(inp)
print (df)
Токовый выход:
+-------+------+---------------------------------------------+
| Name | Year | Address |
+-------+------+---------------------------------------------+
| John | 2018 | 112, Beverly hills,CA, 2645 California, US |
+-------+------+---------------------------------------------+
| Steve | 2018 | 220, Bolvard ave, NY, USA |
+-------+------+---------------------------------------------+
| Steve | 2019 | Kilroy street, Toronto,5512, TO, Canada |
+-------+------+---------------------------------------------+
| John | 2018 | Beverly hills, California, US |
+-------+------+---------------------------------------------+
| John | 2019 | 112, Beverly hills, California, CA, USA |
+-------+------+---------------------------------------------+
| Steve | 2019 | Kilroy street, 5512, Toronto,Canada |
+-------+------+---------------------------------------------+
| John | 2019 | Orange county, California, US |
+-------+------+---------------------------------------------+
| Steve | 2019 | Kilroy street, 5512, Toronto,Canada |
+-------+------+---------------------------------------------+
| John | 2019 | 240, Manhattan, NY, NY, US |
+-------+------+---------------------------------------------+
| Kim | 2019 | Kilroy street, 5512, Toronto, TO, Canada |
+-------+------+---------------------------------------------+
| Kim | 2019 | 112, Beverly hills, California, 2525 CA, US |
+-------+------+---------------------------------------------+
| Kim | 2019 | 220, Bolvard ave, NY, 6545NY, USA |
+-------+------+---------------------------------------------+
Мне нужен отчет о количество мобильностей из все имена между определенный адрес в конкретный c год .
Примечания:
- Несмотря на то, что поле адреса представляет собой длинную строку, в отчете следует учитывать количество определенных изменений символов (например, от Калифорнии до Нью-Йорка) в поле адреса.
- Число для мобильности означает, что символ в поле адреса (т. е. Калифорния) меняется на другой определенный символ в поле адреса (т. е. Нью-Йорк) либо в том же году, либо в следующем году (т. е. все изменения в 2019 или 2018–2019 гг.).
Два идеальных выхода :
1) Матрица, как показано ниже для каждого года.
Пример: Год 2019 (все изменения для определенной c заголовка столбца символов (например, в Нью-Йорке) в 2019 или 2018–2019 гг.).
+------------+------------+----+---------+
| From\ To | California | NY | Toronto |
+------------+------------+----+---------+
| California | 0 | 2 | 0 |
+------------+------------+----+---------+
| NY | 0 | 0 | 1 |
+------------+------------+----+---------+
| Totonto | 1 | 0 | 0 |
+------------+------------+----+---------+
И
2) Изменение адреса для всех лет.
* 1 044 *
* Обратите внимание, что мой фактический размер кадра данных составляет 350 миллионов строк (12 ГБ), поэтому решение лучше использовать с меньшим объемом памяти.