亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取數據幀第一行的正確方法是什么?

獲取數據幀第一行的正確方法是什么?

揚帆大魚 2023-12-29 17:13:04
我使用這段代碼獲取dataframe中速度為0的數據,然后根據緯度、經度、年、月和日對dataframe進行分組。分組后,獲取每組的第一個upload_time_add_8hour和最后一個。如果第一組和最后一組upload_time_add_8hour相差超過5分鐘,則獲取每組的第一行數據,最后將這些數據保存到csv中。upload_time_add_8hourupload_time_add_8hour我認為我的代碼不夠簡潔。我用來df_first_row  = sub_df.iloc[0:1,:]獲取數據框中的第一行,我使用upload_time_add_8hour_first = sub_df['upload_time_add_8hour'].iloc[0]和upload_time_add_8hour_last = sub_df['upload_time_add_8hour'].iloc[-1]來獲取特定列的第一個元素和最后一個元素。有沒有更合適的方法呢?
查看完整描述

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,:]


查看完整回答
反對 回復 2023-12-29
?
幕布斯7119047

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


查看完整回答
反對 回復 2023-12-29
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號