如何将熊猫数据框保存到SAV文件中

时间:2019-02-21 12:22:37

标签: python python-3.x pandas spss

我有以下dataframe

import pandas as pd
mc_all = pd.DataFrame({'col_1': [0,1,1,2],
'col_2' : ['france','france','uk','uk']})

我正在尝试此操作,以便将此dataframe保存到sav文件中

args = ( list(mc_all.columns), dict(zip(list(mc_all.columns),[0]*len(list(mc_all.columns)))) )
with SavWriter('mc_all.sav',*args) as writer:
    writer.writerows(mc_all)

根据this,但是它不起作用。它会引发错误:

  

error.SPSSIOError:提交标头[SPSS_INVALID_HANDLE]时出现问题

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

.writerows不能作为输入。您必须将数据帧转换为np.array才能编写。

import pandas as pd
import numpy as np

mc_all = pd.DataFrame({'col_1': [0,1,1,2],
                       'col_2' : ['france','france','uk','uk']})
savFileName = 'mc_all.sav'
args = (['col_1', 'col_2'], dict(col_1=0, col_2=0))
array = mc_all.values
with SavWriter(savFileName, *args) as writer:
    writer.writerows(array)

答案 1 :(得分:0)

您可以使用pyreadstat:

import pyreadstat

pyreadstat.write_sav(mc_all, savFileName)

更多信息在这里:

https://github.com/Roche/pyreadstat#writing-files