如何从一个组中获取一列的第一行和另一列的最后一行
How to grab the first row from a column and last row from another column from a group by
我有一个包含 3 列的 df。租户,开始和结束为列
Tenant
Start
End
x
10
20
x
20
30
x
30
40
y
15
30
y
30
45
我想按租户分组,从开始获取第一个值,从结束到获取最后一个值。结果 df 应如下所示:
Tenant
Start
End
x
10
40
y
15
45
这是我的代码,但不正确:
df_login_merge_final = df_login_merge_final.groupby('tenant').first().reset_index()
df_login_summary = df_login_merge_final[['tenant','outage_start']]
df_login_merge_final_1 = df_login_merge_final.groupby('tenant').last().reset_index()
df_login_summary_1 = df_login_merge_final_1[['tenant','outage_end']]
df_login_summary_master = pd.merge(df_login_summary,df_login_summary_1,on=['tenant'],how ='inner')
您可以使用一个 groupby
函数并在您需要的每一列上应用聚合函数 min
和 max
使用此语法:
df.groupby(['Tenant']).agg({'Start': min, 'End': max})
我有一个包含 3 列的 df。租户,开始和结束为列
Tenant | Start | End |
---|---|---|
x | 10 | 20 |
x | 20 | 30 |
x | 30 | 40 |
y | 15 | 30 |
y | 30 | 45 |
我想按租户分组,从开始获取第一个值,从结束到获取最后一个值。结果 df 应如下所示:
Tenant | Start | End |
---|---|---|
x | 10 | 40 |
y | 15 | 45 |
这是我的代码,但不正确:
df_login_merge_final = df_login_merge_final.groupby('tenant').first().reset_index()
df_login_summary = df_login_merge_final[['tenant','outage_start']]
df_login_merge_final_1 = df_login_merge_final.groupby('tenant').last().reset_index()
df_login_summary_1 = df_login_merge_final_1[['tenant','outage_end']]
df_login_summary_master = pd.merge(df_login_summary,df_login_summary_1,on=['tenant'],how ='inner')
您可以使用一个 groupby
函数并在您需要的每一列上应用聚合函数 min
和 max
使用此语法:
df.groupby(['Tenant']).agg({'Start': min, 'End': max})