【问题标题】:Python astype() not working. How can I change object data types? [duplicate]Python astype() 不工作。如何更改对象数据类型? [复制]
【发布时间】:2021-10-30 10:02:23
【问题描述】:

我已经从一个 XML 文件中解析了数据并创建了一个 Dataframe。

以下是数据的摘录,实际数据中还有更多列。

#Data parsed into the lists

dataDict = {}
dataDict['Id'] = []
dataDict['Title'] = []
dataDict['Location'] = []

for elem in tree.iter(tag = 'Id'):
    dataDict['Id'].append(elem.text)
for elem in tree.iter(tag = 'Title'):
    dataDict['Title'].append(elem.text)
for elem in tree.iter(tag = 'Location'):
    dataDict['Location'].append(elem.text)
#Dataframe is made

df = pd.DataFrame(dataDict, dataDict['Id'])
df.index.name = 'Id'
df.drop('Id', 1, inplace = True)

df

当我检查当前的数据框类型时,它们都是对象

df.dtypes
#output

Title           object
Location        object
Company         object
dtype: object

我尝试将“标题”列更改为字符串,但是,它仍然是一个对象。

df = df.astype({"Title": str})
#output

Title           object
Location        object
Company         object
dtype: object

我不知道从这里做什么。 astype() 似乎是最推荐的选项,但不起作用。

在使用 pandas 进行更改之前,我是否需要先保存数据并再次读取?

非常感谢任何帮助!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    来自documentation

    pandas 有两种存储字符串的方式。

    1. object dtype,可以保存任何 Python 对象,包括字符串。
    2. StringDtype,专门用于字符串。

    例子

    >>> df
        id
    0  abc
    1  def
    2  ghi
    
    >>> df.dtypes
    id    object
    dtype: object
    
    >>> df.astype({'id': str}).dtypes  # first way to store string
    id    object
    dtype: object
    
    >>> df.astype({'id': 'string'}).dtypes  # second way to store string
    id    string
    dtype: object
    

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      相关资源
      最近更新 更多