如何在Pandas中按name分组并将value列用\n合并至同一单元格?
Pandas中按name列合并对应value为换行分隔的单元格
要实现当name列值相同时,将对应value列内容用换行符\n合并到同一单元格,同时让重复的name只显示一次,按以下步骤操作:
解决代码
import pandas as pd data = [ ['A','x'], ['A','y'], ['A','z'], ['B','m'], ['B','n'], ['B','o'], ['B','p'] ] df = pd.DataFrame(data, columns=['name','value']) # 按name分组,将对应value用换行符连接 merged_df = df.groupby('name')['value'].agg('\n'.join).reset_index() # 处理name列:仅保留每组第一个name,其余设为空字符串,模拟预期输出的显示效果 merged_df['name'] = merged_df['name'].mask(merged_df['name'].duplicated(), '') print(merged_df.to_string(index=False))
运行输出
name value A x y z B m n o p
说明
groupby('name')['value'].agg('\n'.join):按name分组后,将每组的value值用\n拼接成单个字符串reset_index():把分组后的索引转为普通列,方便后续处理mask(merged_df['name'].duplicated(), ''):将重复出现的name替换为空字符串,实现预期的表格显示效果to_string(index=False):打印时隐藏索引,和预期输出格式一致
内容的提问来源于stack exchange,提问作者beetlej
相关产品推荐
相关产品推荐

