You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中不使用group by拼接DataFrame某列的所有行

Pandas将DataFrame某列所有行用'|'拼接的正确方法

问题场景

需要将DataFrame中value列的所有值用|连接成单个字符串,原始DataFrame定义如下:

import pandas as pd

data = [{'body': 'Sahil', 'value': 'A123.456.234 '},
        {'body': 'Goyal', 'value': 'A124.457.235 '}
       ]
        
df = pd.DataFrame(data)

错误代码分析

你尝试的两种方法都无法得到预期结果,原因如下:

  • df['value'].apply(lambda x: "|".join(x)):该代码会对每个字符串元素执行join操作,把单个字符串的每个字符用|分隔,输出的是拆分后的字符序列,而非列值拼接结果。
  • df.agg({"value": "|".join}):该代码返回的是一个Series对象(索引为value,值为拼接后的字符串),而非直接返回目标字符串。

正确实现方法

方法1:直接使用字符串join(最简洁)

直接将value列作为可迭代对象传入str.join:

result = '|'.join(df['value'])
print(result)
# 输出: A123.456.234 |A124.457.235 

如果需要去除每个值末尾的空格,可以先对列做清洗:

result = '|'.join(df['value'].str.strip())
print(result)
# 输出: A123.456.234|A124.457.235

方法2:使用agg并提取结果

如果想用聚合函数实现,可直接对value列调用agg,或从聚合后的Series中提取目标值:

# 方式1:直接对列调用agg
result = df['value'].agg('|'.join)
# 方式2:从agg返回的Series中提取
result = df.agg({"value": "|".join})['value']

print(result)
# 输出: A123.456.234 |A124.457.235 

内容的提问来源于stack exchange,提问作者SAGY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:57:22