我正在尝试选择数据框每组的第一行。
import pandas as pd
import numpy as np
x = [{'id':"a",'val':np.nan, 'val2':-1},{'id':"a",'val':'TREE','val2':15}]
df = pd.DataFrame(x)
# id val val2
# 0 a NaN -1
# 1 a TREE 15
当我尝试使用groupby
执行此操作时,我得到了
df.groupby('id', as_index=False).first()
# id val val2
# 0 a TREE -1
返回给我的行在原始数据框中没有。我是否需要在除groupby列以外的列中对NaN值执行一些特殊操作?
答案 0 :(得分:1)
在Pandas github网站上找到以下似乎是变通方法的内容。使用nth()
方法
而不是first()
df.groupby('id', as_index=False).nth(0,dropna=False)
我没有深入挖掘它。 first()
实际上使用来自不同行的val
似乎很奇怪,但我实际上并没有真正找到文档来检查这是否是设计的。