我有一个Dataset
需要用pandas修改下面是我需要处理的特定列的详细信息:
df["Dependents"].value_counts()
0 345
1 102
2 101
3+ 51
Name: Dependents, dtype: int64
df["Dependents"].notnull().value_counts()
True 599
False 15
Name: Dependents, dtype: int64
我需要将
null
值逐个指定为0
、1
或2
。就像对于第一行,我分配0
,那么下一行应该是1
,然后下一行是2
。然后再次从0
开始,直到所有null
值都被填充。我怎样才能做到?
最佳答案
你可以这样做:
假设您有以下df:
In [214]: df
Out[214]:
Dependents
0 NaN
1 0
2 0
3 0
4 NaN
5 1
6 NaN
7 3+
8 NaN
9 3+
10 2
11 3+
12 1
13 NaN
解决方案:
In [215]: idx = df.index[df.Dependents.isnull()]
In [216]: idx
Out[216]: Int64Index([0, 4, 6, 8, 13], dtype='int64')
In [217]: df.loc[idx, 'Dependents'] = np.take(list('012'), [x%3 for x in range(len(idx))])
In [218]: df
Out[218]:
Dependents
0 0
1 0
2 0
3 0
4 1
5 1
6 2
7 3+
8 0
9 3+
10 2
11 3+
12 1
13 1
关于python - 如何连续生成范围内的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42050776/