首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么fillna不能处理字符串值?

为什么fillna不能处理字符串值?
EN

Stack Overflow用户
提问于 2020-11-26 23:02:57
回答 1查看 40关注 0票数 1

我有一个简单的数据,如下所示。我正在尝试填充内部,但不起作用

像这样的框架;

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

V1 = np.array([1,2,6, np.nan, 7, 1, np.NaN, 9,15])
V4 = np.array(['IT','IK', np.NaN, 'IK','IK','IK','IK','IT','IT'])
df = pd.DataFrame({'sl': V1,
               'departman': V4})

df

给了我:

代码语言:javascript
运行
复制
    sl  departman
0   1.0 IT
1   2.0 IK
2   6.0 nan
3   NaN IK
4   7.0 IK
5   1.0 IK
6   NaN IK
7   9.0 IT
8   15.0IT

在我写完这篇文章之后;

代码语言:javascript
运行
复制
df['departman'].fillna(df.departman.mode()[0] )

提供:

代码语言:javascript
运行
复制
0     IT
1     IK
2    nan
3     IK
4     IK
5     IK
6     IK
7     IT
8     IT
Name: departman, dtype: object
EN

回答 1

Stack Overflow用户

发布于 2020-11-26 23:08:06

我记得有一次在生产过程中,这个问题困扰着我。当您创建数据帧时,您的np.nan被转换为字符串"nan"。请参阅:

代码语言:javascript
运行
复制
df.loc[2, 'departman']

你会得到'nan'。您需要将字符串转换回np.nan或使用loc:

代码语言:javascript
运行
复制
mask = df['departman'] == 'nan'

输出:

代码语言:javascript
运行
复制
     sl departman
0   1.0        IT
1   2.0        IK
2   6.0        IK
3   NaN        IK
4   7.0        IK
5   1.0        IK
6   NaN        IK
7   9.0        IT
8  15.0        IT
df.loc[mask, 'departman'] = df.loc[~mask, 'departman'].mode()[0]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65024532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档