python - 为什么 pandas 中使用的函数行为会发生变化?

标签 python string pandas int dataframe

我不明白为什么一个简单的函数:

def to_integer(value):
    if value == "":
        return None
    return int(value)

仅当数据帧中没有空字符串 "" 时,即仅当不存在任何值时,才会将值从 str 更改为 int返回为 None

如果我去:

type(to_integer('1')) == int

返回 True。

现在,将 applyto_integerdf1 结合使用:

df1 = pd.DataFrame(['1', '2', '3'], columns=['integer'])
result = df1['integer'].apply(to_integer)

给出整数列(np.int64)。

但是如果我将其应用到这个df2:

df2 = pd.DataFrame(['1', '', '3'], columns=['integer'])
result = df2['integer'].apply(to_integer)

它返回一列 float (np.float64)。

是否可以同时拥有一个包含整数和 None 的数据帧?

我使用 Python 3.3 和 Pandas 0.12。

最佳答案

你说得完全正确,不可能有一系列 int 和 np.nan 值。

numpy实现缺失值的方式为np.float64

http://pandas.pydata.org/pandas-docs/dev/missing_data.html .

文档的相关部分如下:

“虽然 pandas 支持存储整数和 bool 类型的数组,但这些类型无法存储丢失的数据。在我们可以切换到使用 NumPy 中的 native NA 类型之前,我们已经建立了一些重新索引时的“转换规则”导致丢失的数据被引入到例如 Series 或 DataFrame 中。它们是:

`data type  Cast to`
`integer    float`
`boolean    object`
`float  no cast`
`object no cast`

关于python - 为什么 pandas 中使用的函数行为会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351099/

相关文章:

Python:从类列表中实例化类的新实例

python - Spark : use reduceByKey instead of groupByKey and mapByValues

python - 如何使用 OpenCV 从网络摄像头读取视频?

python - 如何根据内容将一组图像文件聚类到不同的文件夹

javascript - 为什么 Chrome console.log 以如此烦人的方式显示 String 对象?

Python:如何为 Pandas DataFrame 创建带有离线绘图的阶梯图?

python - Python 中每个用户的排名

java - 如何将包含字符转义序列的字符串转换为 char?

string - 查找字符串并替换批处理文件中的特定字母

python Pandas : Resolving "List Object has no Attribute ' Loc'"