Отдельные агрегированные целые числа с точкой с запятой в виде строки вместо списка - PullRequest
1 голос
/ 30 сентября 2019

Обновление внизу!

Я пытаюсь объединить и отсортировать список идентификаторов и связанных с ними уникальных Name_ID, разделенных точками с запятой. Например:

Name_ID Adress_ID            Name_ID Adress_ID
Name1   5875383              Name1   5875383; 5901847
Name1   5901847              Name2   5285200
Name2   5285200      to      Name3   2342345; 6463736
Name3   2342345
Name3   6463736

Это мой текущий код:

origin_file_path = Path("Folder/table.xlsx")
dest_file_path = Path("Folder/table_sorted.xlsx")

table = pd.read_excel(origin_file_path)
df1 = pd.DataFrame(table)

df1 = df1.groupby('Name_ID').agg(lambda x: x.tolist())

df1.to_excel(dest_file_path, sheet_name="Adress_IDs")

Но он экспортируется в файл Excel следующим образом:

Name_ID Adress_ID
Name1   [5875383, 5901847]

Я не могНе найти способ сказать пандам, что это должно быть что-то иное, чем список или отформатированный по-другому. Я также не уверен, будет ли хорошей идеей использовать что-то вроде openpyxl для последующего редактирования.

Может кто-нибудь сказать мне, как лучше всего избавиться от формата списка и отделить его точкой с запятой? запятых?

ОБНОВЛЕНИЕ: Пользователь Jezrael связал мне эту тему . Но я не могу объединить ';'.join с lambda x: x.tolist().

df1 = df1.groupby('Kartenname').agg(';'.join, lambda x: x.tolist())

Производит TypeError: join () принимает ровно один аргумент (2 дано)

df1 = df1.groupby('Kartenname').agg(lambda x: x.tolist(), ';'.join)

Производит TypeError: () принимает 1 позиционный аргумент, но было дано 2.

Я также пробовал другие комбинации, но ни одна из них, кажется, даже не работает должным образом. Избавиться от лямбда-функции не вариант, потому что тогда она просто вставляет Name_ID Adress_ID тысячу раз вместо правильного Name и правильных идентификаторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...