альтернативы повороту очень больших столовых панд - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть кадр данных размером 25M x 3 столбца:

import pandas as pd
import numpy as np
d={'ID':['A1','A1','A2','A2','A2'], 'date':['Jan 1','Jan7','Jan4','Jan5','Jan12'],'value':[10,12,3,5,2]}
df=pd.DataFrame(data=d)
df

    ID  date    value
0   A1  Jan 1   10
1   A1  Jan7    12
2   A2  Jan4    3
3   A2  Jan5    5
4   A2  Jan12   2
...
An

И я хочу повернуть его, используя:

df['date'] = pd.to_datetime(df['date'], format='%b%d')

(df.pivot(index='date', columns='ID',values='value')
   .asfreq('D')
   .interpolate()
   .bfill()
   .reset_index()
)
df.index = df.index.strftime('%b%d')

Это работает для строк 500k

df3=(df.iloc[:500000,:].pivot(index='date', columns='ID',values='value')
    .resample('M').mean()
    .interpolate()
    .bfill()
    .reset_index()
)

, но когда я использовал свой полный набор данных или> 1M строк, он завершился неудачно с:

ValueError: Unstacked DataFrame is too big, causing int32 overflow

Есть ли какие-либо предложения о том, как заставить это выполнить до конца?

Дальнейшие вычисления выполняются на широкой таблице:

N=19/df2.iloc[0]
df2.mul(N.tolist(),axis=1).sum(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...