Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用大量内存进行数据求和_Python_Memory_Pandas - Fatal编程技术网

Python 使用大量内存进行数据求和

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 你知道如何以更高

我在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
你知道如何以更高效的方式执行相同的操作吗

基本上,我想向以下格式的数据帧添加一列:

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