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

如何将DataFrame单行中的多个数组合并为单个数组?

解决DataFrame行内多个数组合并为单个数组的问题

针对你提供的场景,要把DataFrame每行里的多个数组合并成一个扁平的列表/数组,这里提供几种实用的实现方式:

方法一:用NumPy拼接(简洁高效)

直接利用np.concatenate对整行的数组进行拼接,再转成列表格式:

import numpy as np
import pandas as pd

# 初始化原数据
data = np.array([([6,5,6], [2,6,3], [3,4,5]), ([0,9,4], [7,6,5], [8,2,4]), (1,3,5)])
df = pd.DataFrame(data)

# 合并第一行得到target1
target1 = np.concatenate(df.iloc[0]).tolist()
# 合并第二行得到target2
target2 = np.concatenate(df.iloc[1]).tolist()

print(target1)  # 输出: [6, 5, 6, 2, 6, 3, 3, 4, 5]
print(target2)  # 输出: [0, 9, 4, 7, 6, 5, 8, 2, 4]

方法二:手动遍历扩展(直观易懂)

如果不想依赖NumPy的拼接函数,也可以通过遍历行内元素,逐个扩展列表:

# 处理第一行
target1 = []
for arr in df.iloc[0]:
    target1.extend(arr)

# 处理第二行
target2 = []
for arr in df.iloc[1]:
    target2.extend(arr)

批量处理所有行(兼容非数组行)

如果需要一次性处理所有行,还可以写个自定义函数,同时兼容像第三行这种非数组元素的情况:

def flatten_row(row):
    try:
        # 尝试拼接数组
        return np.concatenate(row).tolist()
    except TypeError:
        # 对非数组行直接返回原元素的列表形式
        return row.tolist()

# 应用到整个DataFrame
flattened_rows = df.apply(flatten_row, axis=1)

# 提取结果
print(flattened_rows[0])  # 对应target1
print(flattened_rows[1])  # 对应target2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:55:17