【问题标题】:Getting \n1 \n2 outputs after conversion转换后获取 \n1 \n2 输出
【发布时间】:2020-12-20 05:23:14
【问题描述】:

我很难理解为什么在将int64 转换为str 后会得到\n1\n2 输出。

从 2014 年到0 2014\n1 2015\n2 2015\n3 2016

这就是我所做的:df.Year = str(df.Year)

之前:

之后:

特写:

【问题讨论】:

    标签: python dataframe


    【解决方案1】:

    当您使用str(do.Year) 时,您会得到所有行的字符串表示形式,而不是每行都作为字符串的系列。 要将行转换为字符串,您需要使用df.Year = df.Year.astype(str)

    【讨论】:

      【解决方案2】:

      这可能有助于执行预期的操作(将列转换为特定类型)Change column type in pandas。至于为什么会这样,让我们​​举个例子

      table.csv
      Year
      2010
      2011
      2012
      

      让我们考虑一下这个 sn-p

      import pandas as pd 
      df = pd.read_csv("table.csv")
      print(str(df.Year))
      

      产生的输出是

      0    2010
      1    2011
      2    2012
      Name: Year, dtype: int64
      

      正如link 明确提到的,对数据框的属性访问会返回一个系列对象。当你对一个系列调用 str 时,它基本上调用 Series.str (Does python `str()` function call `__str__()` function of a class?) 因此在执行问题中提到的操作后,你存储 Series.str 在年份列的每一行中。 如本文开头所述,您可以参考 SO 链接,它非常不言自明。但是,如果您想要代码示例,请发表评论。

      代码片段
      这是将列转换为整数类型的方法之一(灵感来自上面共享的 SO 链接)

      import pandas as pd 
      df = pd.read_csv("table.csv")
      df.Year = df.Year.astype(str)
      print(type(df.Year[0])) #Prints <class 'str'>
      print(df)
      

      【讨论】:

      • 感谢您的意见。对我了解基础知识的旅程非常有帮助,如果不太麻烦,我不介意提供代码示例。
      • @Icemilo 感谢您选择该帖子作为答案。这是我的荣幸。根据您的要求,我包含了一个受链接的 SO 帖子启发的代码示例。问候
      猜你喜欢
      • 2014-05-07
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多