选择groupby和NaN列的第一行

时间:2014-09-29 20:20:46

标签: python pandas dataframe

我正在尝试选择数据框每组的第一行。

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值执行一些特殊操作?

1 个答案:

答案 0 :(得分:1)

Pandas github网站上找到以下似乎是变通方法的内容。使用nth()方法 而不是first()

     df.groupby('id', as_index=False).nth(0,dropna=False)

我没有深入挖掘它。 first()实际上使用来自不同行的val似乎很奇怪,但我实际上并没有真正找到文档来检查这是否是设计的。