我在处理转置数据帧的数据类型时遇到了困难。
下面的示例改编自DataFrame.transpose()文档。kids列的整数类型保留在转置后的数据帧中,如文档所示。
>>> df = pd.DataFrame({'name': ['Alice', 'Bob'],
... 'score': [9.5, 8.6],
... 'employed': [False, True],
... 'kids': [5, 6]})
>>> df
name score employed kids
0 Alice 9.5 False 5
1 Bob 8.6 True 6
>>> df.T
0 1
name Alice Bob
score 9.5 8.6
employed False True
kids 5 6但是,如果我删除其中两列,使得只有一个浮点型列和一个整型列,则转置后的dataframe中的所有值都会转换为浮点型。
>>> pd.DataFrame({'score': [9.5, 8.6],
... 'kids': [5, 6]}).T
0 1
score 9.5 8.6
kids 5.0 6.0为什么会发生这种情况?有没有办法防止这种情况发生?
发布于 2019-12-08 15:13:53
在docs中,您提供了位于底部的原因的答案
当DataFrame有混合的数据类型时,我们得到一个带有对象数据类型的转置DataFrame
在本例中,int和float使"parent“类型为浮点型,因此所有内容都转换为浮点型
至于预防,不是真的,除非你同意对象数据类型,这是一种变通办法。
df
name score employed kids
0 Alice 9.5 False 5
1 Bob 8.6 True 6
print(df.T.drop(['name', 'employed'])) 0 1
score 9.5 8.6
kids 5 6source code也解释了这一事实,但我似乎找不到原因
https://stackoverflow.com/questions/59232388
复制相似问题