如何用Pandas将DataFrame多行按列合并为单行(值转为列表)
解决方案
方法1:生成包含列表对象的单行DataFrame
如果需要保留列表类型(而非字符串形式),可使用以下代码:
import pandas as pd # 原DataFrame df = pd.DataFrame({'col1':['23','34'], 'col2':[21324,345436]}) # 将每列合并为列表,转为单行DataFrame result_df = df.agg(list).to_frame().T
执行后result_df的结构为:
| col1 | col2 |
|---|---|
| ['23','34'] | [21324, 345436] |
方法2:生成包含字符串格式列表的单行DataFrame
如果需要得到示例中字符串形式的列表(如'[23,34]'),可调整聚合函数:
# 统一生成无引号的列表字符串 result_df = df.agg(lambda x: f"[{','.join(map(str, x))}]").to_frame().T
执行后result_df与目标结果完全一致:
pd.DataFrame({'col1':['[23,34]'], 'col2':['[21324,345436]']})
代码说明
df.agg(func):遍历DataFrame的每一列,对列内所有元素应用指定函数func,这里用list直接转成列表,或用lambda函数将列表转为指定格式的字符串。.to_frame().T:将聚合得到的Series(索引为原列名,值为列表/字符串)转换为单行DataFrame,保留原列名作为表头。
内容的提问来源于stack exchange,提问作者frank
相关产品推荐
相关产品推荐

