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
添加回答
舉報