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

Python中如何将DataFrame同一索引下的多个数组合并为一个数组?

问题描述

我有一个名为df的DataFrame,其中包含一列名为pvalue的列,该列数据如下:

print(grouped['pvalue'].to_dict())
{0: [array([0.96612999, 0.30348366])],
4: [array([0.66871158, 0.0011381 ]), array([0.18113085, 0.04860657])], 
5: [array([0.66871158, 0.0011381 ]), array([0.00000000e+00, 8.54560803e-07])], 
6: [array([0.66871158, 0.0011381 ]), array([8.47561031e-131, 1.28484156e-018])]} 

需要编写一个函数,使索引0保持不变,将索引4的内容合并为:

0: [array([0.96612999, 0.30348366])]
4:[array([0.66871158, 0.0011381 ,0.18113085, 0.04860657])]
解决方案

可以利用numpy.concatenate()将目标索引下的多个数组合并,再替换回原DataFrame,实现代码如下:

import numpy as np
import pandas as pd

def merge_pvalue(df, target_idx):
    # 复制原DataFrame,避免修改原始数据
    df_copy = df.copy()
    # 获取目标索引对应的pvalue数组列表
    arr_list = df_copy.loc[target_idx, 'pvalue']
    # 合并数组
    merged_arr = np.concatenate(arr_list)
    # 替换回原位置
    df_copy.loc[target_idx, 'pvalue'] = [merged_arr]
    return df_copy

# 调用函数处理索引4
modified_df = merge_pvalue(grouped, 4)
# 验证结果
print(modified_df['pvalue'].to_dict())

扩展:批量处理多个索引

如果需要同时处理索引4、5、6这类多个目标,只需将函数修改为支持索引列表:

def merge_pvalue_batch(df, target_indices):
    df_copy = df.copy()
    for idx in target_indices:
        arr_list = df_copy.loc[idx, 'pvalue']
        merged_arr = np.concatenate(arr_list)
        df_copy.loc[idx, 'pvalue'] = [merged_arr]
    return df_copy

# 批量处理索引4、5、6
modified_df = merge_pvalue_batch(grouped, [4, 5, 6])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:46:07