Uld*_*tre 4 python dataframe pandas
我有一个df具有以下结构的数据框:
val newidx Code
Idx
0 1.0 1220121127 706
1 1.0 1220121030 706
2 1.0 1620120122 565
Run Code Online (Sandbox Code Playgroud)
它有1000000行。我们总共有600个唯一Code值和200000个唯一newidx值。
如果我执行以下操作
df.pivot_table(values='val', index='newidx', columns='Code', aggfunc='max')
Run Code Online (Sandbox Code Playgroud)
我得到一个MemoryError。但这听起来很奇怪,因为结果数据帧的大小应该是可持续的:200000x600。
这种操作需要多少内存?有没有办法解决此内存错误?
尝试看看这是否适合您的记忆:
df.groupby(['newidx', 'Code'])['val'].max().unstack()
Run Code Online (Sandbox Code Playgroud)
pivot_table 不幸的是,它会占用大量内存,因为它可能会复制多个数据。
如果groupby不能正常工作,则必须将DataFrame分成较小的部分。尽量不要分配多次。例如,如果从csv中读取:
df = pd.read_csv('file.csv').groupby(['newidx', 'Code'])['val'].max().unstack()
Run Code Online (Sandbox Code Playgroud)
避免多次分配。
| 归档时间: |
|
| 查看次数: |
4877 次 |
| 最近记录: |