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
相关产品推荐
相关产品推荐

