Pandas Dataframe 获得每组的最小NaN和最小非NaN行
下面是我的数据框:
df = pd.DataFrame({'id' : [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3],
'vd' : [1, 2, 3, 4, 5, 2, 3, 4, 5, 6,
3, 4, 5, 6, 7],
'value' : [np.NaN, np.NaN, np.NaN, 2.3, 1.1,
np.NaN, np.NaN, 2.2, 3.3, 2.2,
np.NaN, 1, 2, 2.3, 1.1]})
我想过滤行与最小的'vd'列和NaN在'值'为每个组&最小的vd列,而不是Nan在'值'列。
预期产出:
df_out = pd.DataFrame({'id' : [1,1, 2,2, 3,3],
'vd' : [1, 4, 2, 4,
3, 4],
'value' : [np.NaN, 2.3,
np.NaN, 2.2,
np.NaN, 1]})
方法:
输出= df [df.索引==(df ["值"].非空().分组依据(df ["标识"]).转换("idxmax"))]
- 问题:以下(idxmin不工作)**
df['value'].isnull().groupby(df['id']).transform('idxmin')
2条答案
按热度按时间rlcwz9us1#
第一个月
如果像您的示例那样按id和vd排序,则以下代码最为简洁
out
eit6fx6z2#
您也可以不分组地使用
drop_duplicates
:输出: