我有一个带有列的简单pandas数据框:
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
。
答案 0 :(得分:3)
在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')