Python 使用大量内存进行数据求和
我在pandas中使用cumsum创建一个运行计数,它占用的内存比数据帧本身占用的内存还要多。我正在运行的函数如下所示:Python 使用大量内存进行数据求和,python,memory,pandas,Python,Memory,Pandas,我在pandas中使用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 你知道如何以更高
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():
数据帧的大小(行x列)和数据类型是什么?如果是
object
将其转换为带有pd.to\u datetime
或df.convert\u objects
的日期时间。如果您使用的是最新版本,您可以尝试df.groupby([“Index”,“Date”]).cumcount()+1
查看其行为。
df['obs_num'] = df.groupby(["Index", "Date"]).cumcount() + 1