如何通过Pandas将指定行的列表合并为单行(附示例图)
使用Pandas合并指定行内的列表内容为单行
以下针对几种常见的需求场景给出具体实现方案:
场景1:将每行的列表列元素合并为字符串
如果你的DataFrame中某一列是列表类型,需要把每行里的列表元素合并成单个分隔字符串(比如逗号分隔),可以用apply结合字符串join方法:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'id': [1, 2, 3], 'content': [['a', 'b', 'c'], ['d', 'e'], ['f']] }) # 将content列的列表合并为逗号分隔的字符串 df['merged_content'] = df['content'].apply(lambda x: ', '.join(x))
执行后输出结果:
| id | content | merged_content |
|---|---|---|
| 1 | ['a', 'b', 'c'] | a, b, c |
| 2 | ['d', 'e'] | d, e |
| 3 | ['f'] | f |
场景2:合并指定多行的列表内容到同一行
如果需要将指定的多行(比如id为1和2的行)的列表内容合并成单行,可按以下步骤操作:
# 筛选目标行(这里筛选id为1、2的行) selected_rows = df[df['id'].isin([1, 2])] # 嵌套展开列表并合并为字符串 merged_list = [item for sublist in selected_rows['content'] for item in sublist] merged_str = ', '.join(merged_list) # 生成结果DataFrame result_df = pd.DataFrame({'id': ['merged'], 'merged_content': [merged_str]})
输出结果:
| id | merged_content |
|---|---|
| merged | a, b, c, d, e |
场景3:按分组合并列表内容
如果需要按某列分组,将每组内的所有列表元素合并成单行,用groupby结合agg实现:
# 构造分组示例数据 df = pd.DataFrame({ 'group': ['A', 'A', 'B'], 'content': [['a', 'b'], ['c'], ['d', 'e']] }) # 分组合并列表为字符串 grouped_df = df.groupby('group')['content'].agg( lambda x: ', '.join([item for sublist in x for item in sublist]) ).reset_index()
输出结果:
| group | content |
|---|---|
| A | a, b, c |
| B | d, e |
内容的提问来源于stack exchange,提问作者jayvee
相关产品推荐
相关产品推荐

