gpt4 book ai didi

python - 转置混合类型 DataFrame 的数据类型不正确

转载 作者:行者123 更新时间:2023-12-01 00:17:22 30 4
gpt4 key购买 nike

我在转置数据帧的数据类型方面遇到困难。

下面的例子改编自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

但是,如果我删除其中两列,以便只有一个浮点类型列和一个整数类型列,则转置数据帧中的所有值都会转换为浮点。

>>> pd.DataFrame({'score': [9.5, 8.6],
... 'kids': [5, 6]}).T
0 1
score 9.5 8.6
kids 5.0 6.0

为什么会发生这种情况?有没有办法防止这种情况发生?

最佳答案

来自docs您在底部提供了原因的答案

When the DataFrame has mixed dtypes, we get a transposed DataFrame with the object dtype

在您的情况下,它是 intfloat 使“父”类型 float ,因此所有内容都转换为 float

至于预防,不是真的,除非你同意对象数据类型,这是一个解决方法

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 6

source code也解释了这个事实,但我似乎找不到原因

关于python - 转置混合类型 DataFrame 的数据类型不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59232388/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com