根据另一列的子系列条件设置列值

时间:2019-01-22 09:09:59

标签: python pandas conditional counter

我对熊猫很陌生,所以发现了一些困难。我希望有人能帮助我。我有一个像这样的数据集:

我想像期望的输出一样设置'r'列值。每次'r'显示1时,如果列'r'的值不等于None(或者其他null值),则必须将'd'的后续值设置为2。看一下所需的输出。我尝试了几种方法,但似乎都没有用。

原始数据框:

        r       d  
0       1       None  
1       None    -4  
2       None    -1  
3       None    -2  
4       None    -3  
5       None    -1  
6       None    -2  
7       None  None  
8       None  None  
9       None    -3  
10      None    -2  
11      None    -1  
12      None    -3
13      1     None 
14      None    -5
15      None    -7

所需的数据框:

        r       d  
0       1       None  
1       2       -4  
2       2       -1  
3       2       -2  
4       2       -3  
5       2       -1  
6       2       -2  
7       None  None  
8       None  None  
9       None    -3  
10      None    -2  
11      None    -1  
12      None    -3
13      1     None 
14      2       -5
15      2       -7

1 个答案:

答案 0 :(得分:0)

import pandas as pd
import numpy as np

data = {'r': [1, *[np.NaN for _ in range(1, 12)]],
        'd': [-4, -1, -2, -3, -1, -2, np.NaN, np.NaN, -3, -2, -1, -3]}

df = pd.DataFrame(data)
df.r[df.d.notnull()] = 2
print(df)

结果

      r    d
0   2.0 -4.0
1   2.0 -1.0
2   2.0 -2.0
3   2.0 -3.0
4   2.0 -1.0
5   2.0 -2.0
6   NaN  NaN
7   NaN  NaN
8   2.0 -3.0
9   2.0 -2.0
10  2.0 -1.0
11  2.0 -3.0

这是您要找的东西吗?您想要的输出似乎很奇怪。