【问题标题】:numeric data converted to decimal while writing SPSS pyreadstat using python使用python编写SPSS pyreadstat时将数字数据转换为十进制
【发布时间】:2022-08-15 23:51:26
【问题描述】:

当我们使用 python 合并 2 个 SPSS 文件时,我遇到了问题,当我们读取 SPSS 数据文件时,所有数字数据都转换为十进制。我尝试使用 panda 将其转换为 int64,但是当尝试保存合并文件时,它又转换回十进制。

import pyreadstat

import pandas as pd

df, meta = pyreadstat.read_sav(\'SWAN_p1.sav\', apply_value_formats=False, disable_datetime_conversion=True, user_missing=True)

df_2, meta2 = pyreadstat.read_sav(\'SWAN_p2.sav\', apply_value_formats=False, disable_datetime_conversion=True, user_missing=True)

frames = [pd.DataFrame(df), pd.DataFrame(df_2)]
data_final = pd.concat(frames)

c_labels = meta.column_labels

v_labels = meta.value_labels

v_type = meta.original_variable_types

measures = meta.variable_measure

storage_width = meta.variable_storage_width

variable_value_labels = meta.value_labels

variable_l = meta.variable_value_labels

pyreadstat.write_sav(data_final, \"SWAN_Merged_v3.sav\", variable_measure=measures, column_labels=c_labels, variable_value_labels=variable_l)

    标签: python pandas


    【解决方案1】:

    SPSS只有一种类型的数字数据,一种有十进制,没有整数类型,因此总是保存到SAV,你正在将熊猫中的任何数字数据转换为十进制,当然当你读回它时它将是十进制的。

    您可以做的是将变量的显示格式设置为 F1.0(不显示小数),并在回读时,对于具有这种格式的变量,将它们自己转换为整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2021-05-23
      • 2019-08-12
      • 1970-01-01
      • 2015-02-04
      • 2015-05-05
      • 2013-11-05
      相关资源
      最近更新 更多