提取唯一值并根据条件创建新的数据框

时间:2018-09-03 00:06:38

标签: python pandas

假设这是我的示例输入df

     date       h_league
0  19901126        AA
1  19911127        NA
2  20030130        AA
3  20041217       NaN
4  20080716        AA
5  20011215        NA
6  19970603       NaN

我希望从h_league中提取独特的联赛,并且还要使两个新列分别为max_date和最高日期,而min_date则具有该联赛的最低日期。

# Desired Output:

  h_league   Max_date    Min_date
0    AA      20080716    19901126
1    NA      20011215    19911127

我必须为此任务编写一个函数,该函数返回所需的类似输出,但不返回所需的确切输出。

def league_info(league):
    league_games = df[df["h_league"] == league]
    earliest = df["date"].min()
    latest = df["date"].max()
    print("{} went from {} to {}".format(league,earliest,latest))

for league in df["h_league"].unique():
    league_info(league)

我正在寻找一种实现所需输出的熊猫方法。任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:2)

IIUC

df=df.fillna('NA')
df.groupby('h_league').date.agg(['max','min'])
Out[98]: 
               max       min
h_league                    
AA        20080716  19901126
NA        20041217  19911127

答案 1 :(得分:1)

df2=df.fillna('NA')  
df2.groupby('h_league').date.agg(['max','min'])

这对您有用吗?您也可以分配df=df.fillna('NA')。让我知道这个是否奏效。我试过了。