Python 保存到csv数据透视表获取错误“;流程结束,退出代码为139“;

Python 保存到csv数据透视表获取错误“;流程结束,退出代码为139“;,python,csv,pandas,Python,Csv,Pandas,我有一个关于熊猫的问题。 我是熊猫的新手,我不明白是什么导致了这个错误。我在网上和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_descrizi

我有一个关于熊猫的问题。 我是熊猫的新手,我不明白是什么导致了这个错误。我在网上和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,在调用
时,主进程将以以下消息终止:
进程已完成,退出代码为0

这是非常奇怪的,所以我对ipython也做了同样的操作,取而代之的是这样一条消息:
进程完成,退出代码139
。139似乎表示“无效内存访问”(SIGSEGV)

在寻找类似错误的解决方案后,我将最后一行更改为:

res_pivot.to_csv('/tmp/result.csv', sep=';', quotechar='"', chunksize=10)
但结果仍然是一样的

res_pivot.head()的内容:(它真的很大)

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'])
最后一行 使用了res_pivot.tail()和res_pivot.value[0:[250:]

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

你能帮我吗?
谢谢

您的问题在于:
aggfunc=lambda x:x

这不是一个聚合函数,只是在获取值时返回值。
aggfunc
参数应该得到一个函数,用于在
pivot_table
中给定的
索引
组合给出多个值的情况下进行聚合。因为不聚合它们,所以最终会得到一个包含数组作为元素的数据帧。显然,
to_csv
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='"')

请张贴“res_pivot”数据框的标题。@lanenok补充了问题,谢谢。如果您查看数据,第344行或第345行是否有异常情况?也许会显示这些行?@joris我看到在pivot模式下有272行。除此之外,感谢您是否可以/允许我发布您尝试编写的数据的全部内容?你用的是什么版本的熊猫?很好用,如果我想在同一个单元格中写“produzione_data_inazio”和“produzione_data_fine”?而不是复制头?。无论如何,谢谢“在同一单元格中”是什么意思?我的意思是我想在同一单元格中连接“produzione_data_inazio”和“produzione_data_fine”,而不是在列中拥有每一列的副本。我将如何做到这一点?