npr*_*oss 3 python rows nan dataframe pandas
我有一个带有数据行的pandas DataFrame ::
# objectID grade OS method
object_id_0001 AAA Mac organic
object_id_0001 AAA Mac NA
object_id_0001 AAA NA organic
object_id_0002 NA NA NA
object_id_0002 ABC Win NA
Run Code Online (Sandbox Code Playgroud)
即,对于相同的objectID,通常会有多个条目,但有时/通常这些条目具有NA。
因此,我只是在寻找一种可以结合ObjectID并报告非NA条目的方法,例如,上面的折叠为:
object_id_0001 AAA Mac organic
object_id_0002 ABC Win NA
Run Code Online (Sandbox Code Playgroud)
这有效并且已经存在了很长时间。但是,有人声称这是一个可能已修复的错误。按照当前的实现,first如果每个列都存在,则返回第一个非null元素。
df.groupby('objectID', as_index=False).first()
objectID grade OS method
0 object_id_0001 AAA Mac organic
1 object_id_0002 ABC Win NaN
Run Code Online (Sandbox Code Playgroud)
pd.concatpd.concat([
pd.DataFrame([d.lookup(d.notna().idxmax(), d.columns)], columns=d.columns)
for _, d in df.groupby('objectID')
], ignore_index=True)
objectID grade OS method
0 object_id_0001 AAA Mac organic
1 object_id_0002 ABC Win NaN
Run Code Online (Sandbox Code Playgroud)
stackdf.set_index('objectID').stack().groupby(level=[0, 1]).head(1).unstack()
grade OS method
objectID
object_id_0001 AAA Mac organic
object_id_0002 ABC Win None
Run Code Online (Sandbox Code Playgroud)
如果碰巧是字符串('NA')
df.mask(df.astype(str).eq('NA')).groupby('objectID', as_index=False).first()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |