pandas заполнить только критерии соответствия группы? - PullRequest
0 голосов
/ 19 июня 2020

Как заполнить только группы внутри фрейма данных, которые не являются полностью нулевыми?

В фрейме данных ниже должны быть заполнены только группы с df.A=b и df.A=c.

df
     A    B
0    a    NaN
1    a    NaN
2    a    NaN
3    a    NaN
4    b    4.0
5    b    NaN
6    b    6.0
7    b    6.0
8    c    7.0
9    c    NaN
10   c    NaN

Думал что-то вроде: if set(df[df.A==(need help here)].B.values) == {np.nan}:.

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Мы можем groupby

df.B=df.groupby('A').B.apply(lambda x : x.ffill().bfill())
0 голосов
/ 19 июня 2020

Получить индексы, которые не являются полностью нулевыми, а затем forwardfill / backwardfill по этим индексам

df = df.set_index("A")

#get index where entries in B are not completely full
ind = df.loc[df.groupby("A").B.transform(lambda x: x.eq(x))].index.unique()

df.loc[ind] = df.loc[ind].ffill().bfill()


print(df)

     B
A   
a   NaN
a   NaN
a   NaN
a   NaN
b   4.0
b   4.0
b   6.0
b   6.0
c   7.0
c   7.0
c   7.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...