如何在Pandas DataFrame中按组将多行数据合并为Numpy数组并保留时间戳
解决方案
你可以通过groupby结合agg方法实现需求,针对不同列指定对应的聚合逻辑即可:
核心代码
import pandas as pd import numpy as np # 基于你的DataFrame执行分组聚合 result = df.groupby(['sample', 'col1']).agg( merged_data=('data_value', np.array), # 将每组data_value转为numpy数组 time_stamp=('time_stamp', 'first') # 保留分组对应的time_stamp(每组值一致,取第一个即可) ).reset_index()
代码说明
- 分组维度:
groupby(['sample', 'col1'])按照sample和col1的唯一组合分组,精准匹配你需要的分组规则。 - 多列聚合:
- 对
data_value列使用np.array聚合,直接将每组的数值序列转换为numpy数组,存入新列merged_data。 - 对
time_stamp列使用'first'聚合(也可用'last'/'max',因为每组的time_stamp值完全相同),保留该分组对应的时间戳。
- 对
- 重置索引:
reset_index()将分组的sample和col1从索引转换为普通列,得到你需要的最终结构。
可选:生成列表而非numpy数组
如果需要merged_data为Python列表而非numpy数组,只需将np.array替换为list:
result = df.groupby(['sample', 'col1']).agg( merged_data=('data_value', list), time_stamp=('time_stamp', 'first') ).reset_index()
为什么你之前的尝试无效
你之前使用的df.to_numpy()是将整个DataFrame转为二维数组,并非按分组聚合;iloc[0:2,:]仅取固定行,也没有实现分组逻辑,因此无法得到预期结果。
内容的提问来源于stack exchange,提问作者MAtennis9
相关产品推荐
相关产品推荐

