2 回答
TA贡献1784条经验 获得超8个赞
要获取列的第一个和最后一个元素,您的选择已经是最有效/正确的方法。
为了获得第一行,我个人更喜欢使用 DataFrame.head(1),因此对于您的代码,如下所示:
df_first_row = sub_df.head(1)
我没有研究 head() 方法在 Pandas 中是如何定义的及其性能影响,但在我看来,它提高了可读性并减少了与索引的一些潜在混淆。
在其他示例中,您可能还会找到sub_df.iloc[0]
,但此选项将返回 ,pandas.Series
其中包含 DataFrame 列名称的索引。 sub_df.head(1)
将返回一个 1 行 DataFrame,其结果与sub_df.iloc[0:1,:]
TA贡献1794条经验 获得超8个赞
你的出路要么是groupby().agg要么df. agg
如果您需要它,您可以根据设备
#sub_df.groupby('device_id')['upload_time_add_8hour'].agg(['first','last'])
sub_df.groupby('device_id')['upload_time_add_8hour'].agg([('upload_time_add_8hour_first','first'),('upload_time_add_8hour_last ','last')]).reset_index()
device_id upload_time_add_8hour_first upload_time_add_8hour_last
0 1101 10/1/2020 0:03 10/7/2020 13:04
如果您不希望按照设备使用它,也许可以尝试
sub_df['upload_time_add_8hour'].agg({'upload_time_add_8hour_first': lambda x: x.head(1),'upload_time_add_8hour_last': lambda x: x.tail(1)})
upload_time_add_8hour_first 0 10/1/2020 0:03
upload_time_add_8hour_last 19 10/7/2020 13:04
添加回答
举报