Python 熊猫只填充符合标准的组?

Python 熊猫只填充符合标准的组?,python,pandas,data-science,data-cleaning,Python,Pandas,Data Science,Data Cleaning,如何仅填充数据帧中不完全为空的组 在下面的数据框中,只应填充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 我的想法是: 如果setdf[df.A==这里需要帮助].B.val

如何仅填充数据帧中不完全为空的组

在下面的数据框中,只应填充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
我的想法是: 如果setdf[df.A==这里需要帮助].B.values=={np.nan}:。

我们可以做groupby


获取不完全为空的索引,然后对这些索引进行前向填充/后向填充

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

这是正常填充,但如何检查该组是否仅在该列中为nan?@DanielB它将检查,如果全部为nan,则无需填充
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