合并行时替代groupby

时间:2019-06-04 13:26:39

标签: pandas pandas-groupby

在以下数据框中,

date, lane, measure1,measure2,
2019-05-03 00:00:00,lane1,1.0,
2019-05-03 00:00:00,lane2,2.0,
2019-05-03 00:00:00,lane1,,3.0
2019-05-03 00:00:00,lane2,,4.0

每行都包含小节1的值或小节2的行。我想合并两行并创建一个像这样的数据框:

date, lane, measure1,measure2,
2019-05-03 00:00:00,lane1,1.0,3.0
2019-05-03 00:00:00,lane2,2.0,4.0
如您所见,

,数据格式是这样的:日期和泳道的组合是唯一的(但不仅是其中之一)。时间用作索引。

我的解决方案是执行以下操作:

def unify(name, group):

    time, lane, lane = name
    row = pd.Series({
        'lane' : lane,
        'measure1' : group['measure1'].mean(skipna=True),
        "measure2" : group['measure2'].mean(skipna=True))
    row.name = time

    return row

grouped = df.groupby(by=[df.index, 'lane'])
u_df = grouped.apply(lambda x: unify(x.name, x))
但是,由于组的数量几乎是数据帧大小的一半,因此实际数据帧很大(30k),并且此方法很慢(处理过程需要30s)。几乎是因为有时缺少度量,并且跳过了一行。

您能提出更好的选择吗?

0 个答案:

没有答案