如何连续生成范围内的值

如何连续生成范围内的值

我有一个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值逐个指定为012。就像对于第一行,我分配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/

10-12 22:46