【问题标题】:Pandas Dataframe Issue Converting Column dtypePandas Dataframe 问题转换列 dtype
【发布时间】:2017-03-14 12:35:34
【问题描述】:

我有一个带有列的简单熊猫数据框:

col = [['A']]
data = [[1.0],[2.3],[3.4]]
df = pd.DataFrame.from_records(data, columns=col)

这会创建一个数据框,其中有一列类型为np.float64,这正是我想要的。

在此过程的后期,我想添加另一列string

df['SOMETEXT'] = "SOME TEXT FOR ANALYSIS"

虽然此列的 dtype 是 object 的 dtype,但我需要它是 string 类型。所以我做了以下事情:

df['SOMETEXT'] = df['SOMETEXT'].astype(str)

如果我再次查看 dtype,我会得到与该列相同的 dtype:object

我的工作流程中有一个对 dtype 敏感的流程,我需要将列设为 string

有什么想法吗?

array = df.to_records(index=False) # convert to numpy array

数组上的 dtypes 仍然带有 object dtype,但列应该是 string

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

在 pandas 中,所有字符串都是 object 类型。我刚开始的时候也很困惑。

在 NumPy 中,您可以转换字符串:

In [24]: array['SOMETEXT'].astype(str)
Out[24]: 
array(['SOME TEXT FOR ANALYSIS', 'SOME TEXT FOR ANALYSIS',
       'SOME TEXT FOR ANALYSIS'], 
      dtype='<U22')

【讨论】:

  • 是的,但是当您将 DF 导出到 numpy 数组时,它会携带对象类型并且不会将数据转换为字符串。
  • 我忘记了一条信息,请查看更新后的问题。
  • 这只是内部实现。查看潜在重复的答案之一以进行解释。
  • 它不起作用,因为这不是故意的。有一个解释为什么这是字符串类型的对象。
猜你喜欢
  • 2021-05-29
  • 2014-11-26
  • 2018-10-14
  • 1970-01-01
  • 2020-07-26
  • 2013-12-28
  • 2015-05-03
  • 2021-03-01
相关资源
最近更新 更多