如何用Python/Pandas基于同行列信息创建汇总列
问题:为Pandas DataFrame添加带描述的summary列
原始DataFrame定义如下:
import pandas as pd df = pd.DataFrame({ 'id': [1,2,3], 'date': ['2021-09-08', '2021-07-06', '2021-03-04'], 'finding': ['Yes', 'No', 'Yes'], 'unecessary_col': [1,1,1] })
对应的表格输出:
id date finding unecessary_col 0 1 2021-09-08 Yes 1 1 2 2021-07-06 No 1 2 3 2021-03-04 Yes 1
需求:新增summary列,将每行的id、date、finding列内容按指定格式拼接,格式为"ID: {id值}; Date: {date值}; Finding: {finding值}",不需要包含unecessary_col列。
解决方案
方法1:使用apply逐行处理(灵活易读)
通过自定义函数,逐行提取指定列的内容并拼接成目标格式:
def create_summary(row): return f"ID: {row['id']}; Date: {row['date']}; Finding: {row['finding']}" df['summary'] = df.apply(create_summary, axis=1)
方法2:矢量化字符串拼接(高效,适合大数据量)
利用Pandas的矢量化操作直接拼接字符串,避免逐行循环,效率更高:
df['summary'] = "ID: " + df['id'].astype(str) + "; Date: " + df['date'] + "; Finding: " + df['finding']
也可以使用str.format的矢量化写法:
df['summary'] = df.apply(lambda x: "ID: {}; Date: {}; Finding: {}".format(x['id'], x['date'], x['finding']), axis=1)
最终输出
执行上述任意一种方法后,DataFrame将变为:
id date finding unecessary_col summary 0 1 2021-09-08 Yes 1 ID: 1; Date: 2021-09-08; Finding: Yes 1 2 2021-07-06 No 1 ID: 2; Date: 2021-07-06; Finding: No 2 3 2021-03-04 Yes 1 ID: 3; Date: 2021-03-04; Finding: Yes
内容的提问来源于stack exchange,提问作者Dr Wampa
相关产品推荐
相关产品推荐

