【发布时间】:2020-01-30 10:32:12
【问题描述】:
在下方更新!
我正在尝试合并和排序 ID 列表及其连接的唯一 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]
谁能告诉我摆脱列表格式并用分号而不是逗号分隔的最佳方法是什么?
更新:
用户Jezrael 给我链接了这个thread。但我似乎无法将';'.join 与lambda x: x.tolist() 结合起来。
df1 = df1.groupby('Kartenname').agg(';'.join, lambda x: x.tolist())
产生类型错误:join() 只接受一个参数(给定 2 个)
df1 = df1.groupby('Kartenname').agg(lambda x: x.tolist(), ';'.join)
产生类型错误:() 接受 1 个位置参数,但给出了 2 个。
我也尝试了其他组合,但似乎都没有正确执行。摆脱 lambda 函数不是一种选择,因为它只会粘贴 Name_ID Adress_ID 一千次,而不是正确的名称和正确的 ID。
【问题讨论】:
标签: python pandas dataframe group-by aggregate