【发布时间】:2021-07-30 11:36:37
【问题描述】:
我面临在数据帧中实现 apply() 函数但在将 int 转换为十进制时应用函数的场景
例子
df
A B C
12 2.3 40
Nan 29.0 23
2 NaN 3.4
3.9 3 2
当我执行 apply 时,它会将 int 值转换为十进制。
df['A']=df['A'].apply(lambda x: 0 if x!=x else x)
A B C
12.00 2.3 40
0.00 29.0 23
2.00 NaN 3.4
3.90 3 2
预期的数据框:
A B C
12 2.3 40
0 29.0 23
2 NaN 3.4
3.9 3 2
创建以下数据框的最终目标:
A B C
int decimal int
int decimal int
int decimal decimal
decimal int int
我试过了
df['A']=df['A'].apply(lambda x: o if x!=x else int(x))
但这会将十进制值转换为int。 任何人都可以向我建议如何防止建议转换,因为我非常关心数据框单元格的数据类型。
注意:我没有使用 fillna(),因为它也会导致一些将 int 自动转换为小数的问题。
如果有人有其他解决方案来防止这种情况也很有帮助。
【问题讨论】:
-
int 到 decimal 的自动转换问题是什么意思?你是在说
float吗?你的专栏A不应该是float,就像你有3.9一样吗? -
整个数据框的
dtype是什么?是对象吗? ..请显示df.dtypes的输出 -
@mozway,我专注于数据帧的单元格,在数据帧列上使用 apply() 函数后,此 int 转换为十进制
-
pandas 数据框的每一列都是一个pandas 系列,并且一个系列总是基于其中的值具有一种数据类型,如果值是浮动的或
NaN,则整列将是浮动的数据类型。 -
我认为您的意思是“浮动”,而不是 decimal。但无论如何,不使用
fillna的根本原因是什么?