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

如何在Pandas DataFrame中创建多列?拆分行内像素为独立列

嘿,我来帮你搞定这两个Pandas的问题!先聊聊怎么给DataFrame创建多列,再处理你说的像素拆分需求~

一、在Pandas DataFrame中创建多列的常用方法

这里有几种实用的方式,你可以根据场景选:

  • 直接赋值批量创建:如果要一次性加几列,直接指定列名列表赋值就行。比如要加3个初始值为0的列,或者给不同行分配不同值:
    import pandas as pd
    df = pd.DataFrame({'原列': [1,2,3]})
    
    # 加3个初始值为0的列
    df[['列1', '列2', '列3']] = 0
    
    # 给不同行分配不同值
    df[['列4', '列5']] = [[10,20], [30,40], [50,60]]
    
  • 使用assign()方法:这个方法不会修改原DataFrame,适合链式操作,还能基于现有列计算新列:
    # 添加固定值列+基于原列计算的列
    df = df.assign(
        固定列=100,
        计算列=lambda x: x['原列'] * 2
    )
    
  • 从列表/字典批量生成:如果有预先准备好的列名和对应数据,直接把数据转成DataFrame赋值就行:
    cols = ['x', 'y', 'z']
    data = [[1,2,3], [4,5,6], [7,8,9]]
    df[cols] = pd.DataFrame(data)
    
  • 用apply()生成多列:如果需要基于每行数据生成多个新列,记得加result_type='expand'参数把结果拆成多列:
    # 基于原列生成两个新列
    df[['新列1', '新列2']] = df.apply(
        lambda row: (row['原列'] + 1, row['原列'] * 3),
        axis=1,
        result_type='expand'
    )
    
二、将每行像素拆分为独立列的实现

假设你的DataFrame里有一列(比如叫pixels),每行是你给出的那种空格分隔的像素值(或者是数值列表),分两种情况处理:

情况1:像素是空格分隔的字符串格式

比如你的数据长这样:

df = pd.DataFrame({'pixels': [
    "0 129 179 242 128 178 241",
    "1 104 93 75 101 90 72",
    "2 172 159 176 171 158 175"
]})

处理步骤很简单:用str.split()拆分字符串,expand=True直接把拆分后的列表转成多列,还可以给新列命名:

# 拆分字符串并生成多列
split_pixels = df['pixels'].str.split(' ', expand=True)
# 给新列命名(比如pixel_0、pixel_1...)
split_pixels.columns = [f'pixel_{i}' for i in split_pixels.columns]
# 和原DataFrame合并(如果不需要保留原pixels列,就先drop掉)
new_df = pd.concat([df.drop('pixels', axis=1), split_pixels], axis=1)

情况2:像素是列表格式

如果每行的像素已经是Python列表了,比如:

df = pd.DataFrame({'pixels': [
    [0, 129, 179, 242, 128, 178, 241],
    [1, 104, 93, 75, 101, 90, 72],
    [2, 172, 159, 176, 171, 158, 175]
]})

直接把列表列转成DataFrame就行,比字符串更省事:

split_pixels = pd.DataFrame(df['pixels'].tolist())
split_pixels.columns = [f'pixel_{i}' for i in split_pixels.columns]
new_df = pd.concat([df.drop('pixels', axis=1), split_pixels], axis=1)

最后如果不需要保留原pixels列,直接用new_df = split_pixels也可以,完全按你的需求来~

内容的提问来源于stack exchange,提问作者J.SM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:47:23