我有一个简单的数据,如下所示。我正在尝试填充内部,但不起作用
像这样的框架;
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给了我:
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在我写完这篇文章之后;
df['departman'].fillna(df.departman.mode()[0] )提供:
0 IT
1 IK
2 nan
3 IK
4 IK
5 IK
6 IK
7 IT
8 IT
Name: departman, dtype: object发布于 2020-11-26 23:08:06
我记得有一次在生产过程中,这个问题困扰着我。当您创建数据帧时,您的np.nan被转换为字符串"nan"。请参阅:
df.loc[2, 'departman']你会得到'nan'。您需要将字符串转换回np.nan或使用loc:
mask = df['departman'] == 'nan'输出:
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]https://stackoverflow.com/questions/65024532
复制相似问题