pandas 文档说:“就像 NumPy 数组一样,pandas 系列有一个 dtype”,但这似乎不是真的。这是什么意思?

问题描述 投票:0回答:1

pandas 文档 说:“就像 NumPy 数组一样,pandas 系列有一个 dtype。”但这似乎不是真的。

如果我有一个数据框:

df = pd.DataFrame({
    'A': [1, 'a'],
    'B': [2, 'b']
})

我打电话给:

type(df['B'])

我明白了

<class 'pandas.core.series.Series'>
df['B'].dtype
返回
object
。我对文档的理解是 B 列中的数据应该被强制转换为字符串。事实上,这就是 NumPy 所做的。例如:

arr1 = np.array([1, 'a'])
arr2 = np.array([2, 'b'])

arr1[0] + arr2[0]
结果为
'12'
.
type(arr1[0] + arr2[0])
结果为
string
.

然而,在熊猫中:

df['A'][0] + df['B'][0]
结果为
3
(一个整数),这意味着即使我正在处理同时包含整数和字符串的系列,但整数并没有像在 NumPy 中那样被强制转换为字符串。该系列似乎包含不同类型的数据。这与文档要我们相信的相反。

我误会了什么?

pandas numpy casting series
1个回答
0
投票

文档提到系列是一个一维标记数组,能够保存任何数据类型,例如整数、字符串、浮点数、Python 对象等。此外,它声明,类似于 NumPy 数组,一个系列只有一个数据类型。

因此,虽然 Series 可以包含任何类型的元素数据,但整个系列将由单个 dtype 表示。例如,如果一个系列同时包含整数和浮点数,Pandas 将为整个系列分配一个浮点数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.