为什么Jupyter使用列的值来填充列名?

我正在使用SPSS .sav文件,该文件具有典型的列名,如名称,类型,宽度等。 “名称”列标记了m1,I1,I2等行。

这是Jupyter笔记本: https://imgur.com/9hXuL7u

import pandas as pd
df = pd.read_spss('./Data.sav')
df.head()

如您所见,列名称是“名称”的条目: https://imgur.com/ZVMS0F0 即,不是使用“名称”,“类型”,“宽度”作为列名,而是使用“名称”的值:m1,I1,I2等。

我对Jupyter和SPSS还是陌生的,不知道从哪里开始。

编辑: 按照Rahul Singh的建议,我添加了header=None,尽管read_spss()似乎无法识别该参数。

import pandas as pd
df = pd.read_spss('./Data.sav',header=None)
df.head()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-39-77d006c914c9> in <module>
      1 import pandas as pd
----> 2 df = pd.read_spss('./Data_ANQAR_Wave39.sav',header=None)
      3 df.head()

TypeError: read_spss() got an unexpected keyword argument 'header'

`
hzhz020261 回答:为什么Jupyter使用列的值来填充列名?

实际上,这个问题不是与朱庇特有关,而是与熊猫有关(我们不应该说它是问题:))

Usually when you read data from any file(.csv,.txt etc) and header (column names) is is not available in it then pandas will automaticly take first row as header.
To get rid of this problem you can provide `header=None`

代码:

import savReaderWriter 
import numpy as np
import pandas as pd

# Convert .sav file into .csv
reader_np = savReaderWriter.SavReaderNp("Data.sav")
array = reader_np.to_structured_array("outfile.dat") 
np.savetxt("Data.csv",array,delimiter=",")
reader_np.close()

# Read .csv file without header
df = pd.read_spss("Data.csv",header=None)
df.head()
,

在SPSS中查看的不是数据(数据编辑器),而是元数据(变量视图),它显示列的特征而不是数据本身。熊猫正在正确读取数据,在SPSS中切换到“数据编辑器”以了解我的意思。

本文链接:https://www.f2er.com/3126431.html

大家都在问