Python 熊猫只填充符合标准的组?
如何仅填充数据帧中不完全为空的组 在下面的数据框中,只应填充df.A=b和df.A=c的组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
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