установить значения столбца на основе условия подсерии из другого столбца - PullRequest
0 голосов
/ 22 января 2019

Я новичок в пандах, поэтому я нашел некоторые трудности. Я надеюсь, что кто-то поможет мне. У меня есть такой набор данных:

Я хотел бы установить значения столбцов 'r', как в желаемом выводе. Каждый раз, когда 'r' показывает 1, последующие значения 'r' должны быть установлены на 2, если столбец 'd' получил значения, не равные None (или другое нулевое значение). Посмотрите на желаемый результат. Я попытался несколько подходов, но ни один из них не работает.

Исходный кадр данных:

        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 голосов
/ 22 января 2019
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

Это то, что вы ищете? Ваш желаемый результат кажется странным.

...