У меня есть кадр данных размером 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)