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

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

Pandas groupby 并因此獲得具有最大值的行

Pandas groupby 并因此獲得具有最大值的行

炎炎設計 2022-07-26 20:59:22
我有一個帶有索引日期時間的 pandas 數據框,我想按秒分組,結果得到列“a_ABS”中具有最大值的行,但我只得到每列的最大值。import pandas as pddata = {'lat':[4.2471, 4.2646,4.2945, 4.2819,4.2635,4.2616,4.2731,4.2555],        'lng':[-76.7504,-76.7198,-76.7069,-76.7251,-76.726,-76.7196,-76.715,-767.118],       'a':[208.999,-894.0,-171.0,108.999,-162.0,-29.0,-143.999,-133.0],       'e':[0.105,0.209,0.934,0.150,0.158,0.347,0.333,0.089]}df = pd.DataFrame(data)df = pd.DataFrame(data, index =['2020-01-01 16:32:14.105000-05:00', '2020-01-01 16:32:14.112000-05:00',                                '2020-01-01 16:32:14.175000-05:00', '2020-01-01 16:32:14.176000-05:00',                                '2020-01-01 16:32:14.211000-05:00','2020-01-01 16:32:14.220000-05:00',                               '2020-01-01 16:32:14.310000-05:00','2020-01-01 16:32:14.327000-05:00'])df.index = pd.to_datetime(df.index)a=dfa['a_ABS']=a['a'].abs()aa=a.groupby([a.index.floor('s')], as_index=True).max()
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

您快到了。使用 排序后選擇第一行a.iloc[:1]。完整代碼:


import pandas as pd


data = {'lat':[4.2471, 4.2646,4.2945, 4.2819,4.2635,4.2616,4.2731,4.2555],

        'lng':[-76.7504,-76.7198,-76.7069,-76.7251,-76.726,-76.7196,-76.715,-767.118],

       'a':[208.999,-894.0,-171.0,108.999,-162.0,-29.0,-143.999,-133.0],

       'e':[0.105,0.209,0.934,0.150,0.158,0.347,0.333,0.089]}


df = pd.DataFrame(data)

df = pd.DataFrame(data, index =['2020-01-01 16:32:14.105000-05:00', '2020-01-01 16:32:14.112000-05:00',

                                '2020-01-01 16:32:14.175000-05:00', '2020-01-01 16:32:14.176000-05:00',

                                '2020-01-01 16:32:14.211000-05:00','2020-01-01 16:32:14.220000-05:00',

                               '2020-01-01 16:32:14.310000-05:00','2020-01-01 16:32:14.327000-05:00'])

df.index = pd.to_datetime(df.index)



a=df

a['a_ABS']=a['a'].abs()


a=a.sort_values(by="a_ABS", ascending=False)

first_df=a.iloc[:1]


print(first_df)


查看完整回答
反對 回復 2022-07-26
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

像這樣的東西會起作用:


import pandas as pd


# create dataframe:

df = pd.DataFrame({

    'lat':[4.2471, 4.2646,4.2945, 4.2819,4.2635,4.2616,4.2731,4.2555],

    'lng':[-76.7504,-76.7198,-76.7069,-76.7251,-76.726,-76.7196,-76.715,-767.118],

    'a':[208.999,-894.0,-171.0,108.999,-162.0,-29.0,-143.999,-133.0],

    'e':[0.105,0.209,0.934,0.150,0.158,0.347,0.333,0.089]

})


# set index:

df.index = pd.to_datetime([

    '2020-01-01 16:32:14.105000-05:00', '2020-01-01 16:32:14.112000-05:00',

    '2020-01-01 16:32:14.175000-05:00', '2020-01-01 16:32:14.176000-05:00',

    '2020-01-01 16:32:14.211000-05:00', '2020-01-01 16:32:15.220000-05:00',

    '2020-01-01 16:32:14.310000-05:00', '2020-01-01 16:32:15.327000-05:00',

])


# create absolute column:

df['a_ABS'] = df['a'].abs()


# create seconds column:

df['seconds'] = df.index.second


# group columns by seconds:

df_grouped = df.groupby(['seconds']).max()


# extract only the 'a_ABS' column:

df_grouped = df_grouped['a_ABS']


# reset index:

df_grouped = df_grouped.reset_index()


查看完整回答
反對 回復 2022-07-26
  • 2 回答
  • 0 關注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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