保存到csv a pivot table get error“处理结束,退出代码139”

2024-10-06 07:55:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于熊猫的问题。 我是熊猫新手,我不明白是什么导致了这个错误。我在互联网和stackoverflow上搜索答案,但找不到任何关于它的信息。

from pandas import read_csv, pivot_table
f_csv = read_csv(filepath_or_buffer=file_dir, delimiter=';')
res_pivot = pivot_table(f_csv, index=['nome_ua'], columns=['attivita_descrizione'], values=['produzione_data_inizio', 'produzione_data_fine'], aggfunc=lambda x: x)
res_pivot.to_csv('/tmp/result.csv', sep=';', quotechar='"')

CSV文件有344行和7列。 我使用的是TurboGears 2.3.5,在调用.to_csv时,主进程将终止,并显示以下消息:Process finished with exit code 0

这很奇怪,所以我对ipython做了同样的处理,结果得到了这样的消息:Process finished with exit code 139。139似乎意味着“无效内存访问”(SIGSEGV)。

在查找与上一行相似的错误后,查找与上一行类似的错误:

^{pr2}$

但结果还是一样。

res的内容_枢轴.头部():http://pastebin.com/YKcrkCjf(真的很大)

res的内容_pivot.columns数据透视表公司名称:

MultiIndex(levels=[[u'produzione_data_inizio', u'produzione_data_fine'], [u'Bovini - Allevamento  autoconsumo', u'Bovini - Da riproduzione', u'Bovini - Ingrasso', u'Bovini - Linea vacca vitello', u'Bovini - Produzione latte']],
       labels=[[0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]],
       names=[None, u'attivita_descrizione'])

最后一行http://pastebin.com/N7gX22AQ 已用资源_枢轴.尾部()和res_pivot.values公司[0:][250:]

我试着在CSV中只留下5行,一切都很好。

你能帮帮我吗? 谢谢


Tags: columnscsvreaddata错误tablerespivot
1条回答
网友
1楼 · 发布于 2024-10-06 07:55:17

你的问题在于:aggfunc=lambda x: x
这是一个聚合函数,只是在获取值时返回值。aggfunc参数应该得到一个函数,该函数用于在pivot_table中给定的index和{}组合给出多个值的情况下进行聚合。因为不聚合它们,所以最终得到的是一个包含数组作为元素的数据帧。很明显,to_csv被它噎住了。在

需要解决的问题是提供聚合。因为您没有数值,所以有可能取第一个值(aggfunc='first'就可以了,因为'first'是接受第一个值的函数的公认快捷方式)。使用此功能,它不会崩溃:

In [10]: res_pivot = pd.pivot_table(f_csv, index=['nome_ua'], 
                                    columns=['attivita_descrizione'],
                                    values=['produzione_data_inizio', 'produzione_data_fine'],
                                    aggfunc='first')

In [11]: res_pivot.to_csv('tmp_result.csv', sep=';', quotechar='"')

相关问题 更多 >