如何在从 pandas 数据帧保存 SPSS 系统(sav)文件时将系统缺失值从 nan 重新编码为空 space?
How to recode SYSTEM missing values from nan to empty space while saving SPSS system (sav) files from pandas dataframe?
我使用 savReaderWriter 模块从 python pandas 数据帧保存一个 SPSS 文件,代码如下:
import savReaderWriter as srw
savFileName = 'Outfile name.sav'
records = map(list, df.values)
varNames = list(df.columns)
varTypes = {}
for n, values in enumerate(records[0]):
varName = varNames[n]
if df.dtypes[n] == 'float64':
varTypes[varName] = 0
else:
varTypes[varName] = 255
with srw.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer:
writer.writerows(records)
问题是 SPSS 文件中的空字符串变量具有 "nan" 值。
在文档中,savWriter 的默认选项是 missingValues=None,但将 "None" 更改为 '' 或任何其他字符串都不起作用。
使用空字符串而不是 nan 的解决方案是什么?
非常感谢您
我想如果您想将 "nan" 值表示为空字符串,最好的方法是在源 df
中替换它们
df.fillna('')
然后保存。
P.S。但请注意 SPSS 处理缺失数据的方法。这些设置在文件的 header.
中
我使用 savReaderWriter 模块从 python pandas 数据帧保存一个 SPSS 文件,代码如下:
import savReaderWriter as srw
savFileName = 'Outfile name.sav'
records = map(list, df.values)
varNames = list(df.columns)
varTypes = {}
for n, values in enumerate(records[0]):
varName = varNames[n]
if df.dtypes[n] == 'float64':
varTypes[varName] = 0
else:
varTypes[varName] = 255
with srw.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer:
writer.writerows(records)
问题是 SPSS 文件中的空字符串变量具有 "nan" 值。 在文档中,savWriter 的默认选项是 missingValues=None,但将 "None" 更改为 '' 或任何其他字符串都不起作用。 使用空字符串而不是 nan 的解决方案是什么?
非常感谢您
我想如果您想将 "nan" 值表示为空字符串,最好的方法是在源 df
中替换它们df.fillna('')
然后保存。
P.S。但请注意 SPSS 处理缺失数据的方法。这些设置在文件的 header.
中