我在熊猫中使用cumsum来创建运行计数,并且它消耗的内存比数据帧本身占用的内存更多。我正在运行的功能如下:
def gen_obs_num(df):
df.sort(columns=['Index', 'Date'], inplace=True)
df['obs_num'] = 1
df['obs_num'] = df.groupby(['Index', 'Date'])['obs_num'].cumsum()
return df
关于如何以更高效的内存方式执行相同操作的任何想法?
基本上我想将列添加到以下格式的数据框中:
Index Date
A 1/1/2000
A 1/2/2000
A 1/2/2000
B 1/1/2000
B 1/1/2000
B 1/10/2000
这样就变成:
Index Date obs_num
A 1/1/2000 1
A 1/2/2000 1
A 1/2/2000 2
B 1/1/2000 1
B 1/1/2000 2
B 1/10/2000 1
最佳答案
DSM的答案大大减少了内存使用量。重申一下,最好的方法是改用cumcount():
df['obs_num'] = df.groupby(["Index", "Date"]).cumcount() + 1