我有一个类似的 Dataframe ,有两列
import pandas as pd
import numpy as np
df=pd.DataFrame({'id_col':sorted([1,2,3]*2),'rate':[np.nan,np.nan,np.nan,5,np.nan,9]})
我有的是
| id_col|速率|
| - ------|- ------|
| 1个|钠氮|
| 1个|钠氮|
| 第二章|钠氮|
| 第二章|5.0版|
| 三个|钠氮|
| 三个|9.0分|
我想要的是
| id_col|速率|
| - ------|- ------|
| 第二章|钠氮|
| 第二章|5.0版|
| 三个|钠氮|
| 三个|9.0分|
我想保留至少有1个非NaN值的所有id_col值
有什么想法吗?
2条答案
按热度按时间ct2axkht1#
您可以使用布尔掩码并使用
transform
将布尔掩码广播给组中的其他成员:注意:你有很多方法可以实现这一点,但很多都使用了
groupby_transform
。输出:
详情:
6l7fqoea2#
您可以使用
first_valid_index
和notna
来创建布尔掩码,然后对 Dataframe 进行子集化。输出: