Dataframe包含:
>> df
ID DATE ZIPCODE
196512 1/1/2017 17961
196512 3/1/2016 96512
196512 2/1/2017 34521
196512 9/23/2017 85687
196795 3/2/2017 28978
196795 7/3/2016 98362
196795 9/2/2016 21345
196795 1/1/2015 03452
我现在的蟒蛇大熊猫代码是:
df1 = pd.pivot_table(df,index=["ID","ZIPCODE"],values=["DATE"],aggfunc=min)
这段代码得到了我想要的结果,但是在我的示例中可以看到,通过在ID和MIN代码上创建一个枢轴表,之后我必须手动评估我的输出,以便用MIN日期的MIN代码计算每个ID的最早日期。
我想要的结果是:
ID Date ZIPCODE
196512 3/1/2016 96512
196795 1/1/2015 03452
因为我正在寻找每个ID的最早日期和相关的邮政编码。
发布于 2018-04-13 02:04:26
这是一条路。
df['DATE'] = pd.to_datetime(df['DATE'], dayfirst=True)
res = df.loc[df.groupby('ID')['DATE'].idxmin()]
print(res)
# ID DATE ZIPCODE
# 1 196512 2016-01-03 96512
# 7 196795 2015-01-01 3452
发布于 2018-04-13 02:03:52
您需要先转换为datetime格式,然后在sort_values
之后使用sort_values
df.assign(DATE=pd.to_datetime(df.DATE)).sort_values('DATE').drop_duplicates('ID')
Out[207]:
ID DATE ZIPCODE
7 196795 2015-01-01 3452
1 196512 2016-03-01 96512
https://stackoverflow.com/questions/49808213
复制相似问题