我试图通过复制最后一行,然后修改一些值,为dataframe中的每个组创建一个新行。我的方法如下,concat步骤似乎是瓶颈(我也尝试了append)。有什么建议吗?在
def genNewObs(df):
lastRowIndex = df.obsNumber.idxmax()
row = pd.DataFrame(df.ix[lastRowIndex].copy())
# changes some other values in row here
df = pd.concat([df,row], ignore_index=True)
return df
df = df.groupby(GROUP).apply(genNewObs)
编辑1:基本上我有一堆关于不同日期最后一次观察的数据。我要为当前日期的所有组创建最终观察。在
^{pr2}$如果假设当前日期为2014年1月31日,则该日期变为:
Group Date Days Since last Observation
A 1/1/2014 0
A 1/10/2014 9
A 1/31/2014 21
B 1/5/2014 0
B 1/25/2014 20
B 1/27/2014 2
B 1/31/2014 4
我试过用放大的方法来设置,这是所有技术中最慢的。有什么想法吗?在
多亏了用户1827356,我将操作从apply中去掉,从而将速度提高了100倍。出于某种原因,首先是按组列删除,所以我改用idxmax。在
相关问题 更多 >
编程相关推荐