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

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

熊貓找到最佳匹配并在表中顯示結果

熊貓找到最佳匹配并在表中顯示結果

偶然的你 2023-10-11 16:08:51
我有一個如下所示的數據表,我試圖找到 1991-2019 年與當前年份(2020 年)每列最接近的匹配。最后,我需要一個如下所示的表格來顯示查找過程的結果。數據表(日期):      soi     ao   nao   pna       epo       wpoDate                                            1990 -0.7 -0.210  1.18 -0.46 -0.285904  0.7630531991 -1.5 -0.112  0.61  1.15 -0.418762  0.8507521992  0.1 -0.640 -0.28 -1.13  0.679149 -0.7882471993 -0.7 -0.361 -0.41 -0.97 -1.228830 -0.4475791994 -1.6 -0.084 -1.14 -2.02  0.193085 -0.9127371995  0.3 -0.549  0.45  1.22 -0.658217  0.6217211996  0.6 -1.140 -0.69 -0.27  0.394934 -1.1616841997 -1.4  0.195  0.74  0.22  0.138353  0.4148021998  1.0 -1.050 -1.80  0.42  0.254834  0.5632911999 -0.1  0.059  0.50  0.33  0.176403  0.5872102000  0.9  0.395 -0.06 -1.21 -0.303799 -0.8093442001  0.2 -0.707 -0.49  0.04  0.429597  1.0820772002 -0.6 -0.043 -0.54  0.60 -0.117497 -0.0124902003 -0.1  0.467  0.16  0.59  0.172270 -0.5031142004 -0.3  0.855  0.52 -0.11  0.611507 -0.0554182005  0.4  0.802  0.76  1.32  0.117412  0.6285582006 -0.6  0.606 -1.43  0.31 -0.439056 -0.6662512007  0.2  0.179  0.85  1.52 -0.091188  0.8873572008  1.2 -0.327  1.14  0.89 -0.146648 -0.4445642009  0.3  0.875  1.62  1.03  0.747285  0.2234642010  2.2 -0.865 -0.62  1.07 -0.322557  0.0027582011  1.0  0.665  0.67 -0.39  1.035278  1.1462692012  0.2  0.772 -0.43 -0.39 -0.006886  0.5600832013  0.3 -0.461  0.38  0.41  0.451967  0.6009242014 -0.7  0.102  1.72  0.78 -0.343152 -0.4538562015 -1.6 -0.165 -0.49 -0.80  0.394162 -1.1611642016  1.2  0.781  0.74  0.11  0.104103  0.1892802017  0.6 -0.492 -0.45 -0.32  0.084595 -0.2687212018 -0.9  0.585  1.78  1.16 -1.217344 -1.9470522019 -1.2  0.306 -0.01  1.62 -0.006176  0.6761292020  0.9  0.631  1.11  0.59 -0.398920 -0.165507例如,最終結果需要如下所示:  index     0  0   soi  2010  1    ao  2009  2   nao  2018  3   pna  2019  4   epo  2011  5   wpo  2011  我嘗試過以這種形式使用 argsort,但我無法弄清楚如何在每列的循環中提取最佳匹配,并以表格形式創建結果。daty.iloc[(daty['soi']-input).abs().argsort()[:1]]。感謝您的任何幫助!
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

你的意思是:


df.iloc[:-1].sub(df.iloc[-1]).abs().idxmin()

輸出:


soi    2000

ao     2006

nao    2008

pna    2003

epo    1991

wpo    2017

dtype: int64


查看完整回答
反對 回復 2023-10-11
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

你可以這樣做:


df.idxmax(axis='index')

對于您的數據集,其計算結果為:


soi    2010

ao     2009

nao    2018

pna    2019

epo    2011

wpo    2011

dtype: int64

為了測試這一點,我從您的帖子中創建了數據框,如下所示:


from io import StringIO

infile= StringIO(

"""Date  soi     ao   nao   pna       epo       wpo

1990 -0.7 -0.210  1.18 -0.46 -0.285904  0.763053

1991 -1.5 -0.112  0.61  1.15 -0.418762  0.850752

1992  0.1 -0.640 -0.28 -1.13  0.679149 -0.788247

1993 -0.7 -0.361 -0.41 -0.97 -1.228830 -0.447579

1994 -1.6 -0.084 -1.14 -2.02  0.193085 -0.912737

1995  0.3 -0.549  0.45  1.22 -0.658217  0.621721

1996  0.6 -1.140 -0.69 -0.27  0.394934 -1.161684

1997 -1.4  0.195  0.74  0.22  0.138353  0.414802

1998  1.0 -1.050 -1.80  0.42  0.254834  0.563291

1999 -0.1  0.059  0.50  0.33  0.176403  0.587210

2000  0.9  0.395 -0.06 -1.21 -0.303799 -0.809344

2001  0.2 -0.707 -0.49  0.04  0.429597  1.082077

2002 -0.6 -0.043 -0.54  0.60 -0.117497 -0.012490

2003 -0.1  0.467  0.16  0.59  0.172270 -0.503114

2004 -0.3  0.855  0.52 -0.11  0.611507 -0.055418

2005  0.4  0.802  0.76  1.32  0.117412  0.628558

2006 -0.6  0.606 -1.43  0.31 -0.439056 -0.666251

2007  0.2  0.179  0.85  1.52 -0.091188  0.887357

2008  1.2 -0.327  1.14  0.89 -0.146648 -0.444564

2009  0.3  0.875  1.62  1.03  0.747285  0.223464

2010  2.2 -0.865 -0.62  1.07 -0.322557  0.002758

2011  1.0  0.665  0.67 -0.39  1.035278  1.146269

2012  0.2  0.772 -0.43 -0.39 -0.006886  0.560083

2013  0.3 -0.461  0.38  0.41  0.451967  0.600924

2014 -0.7  0.102  1.72  0.78 -0.343152 -0.453856

2015 -1.6 -0.165 -0.49 -0.80  0.394162 -1.161164

2016  1.2  0.781  0.74  0.11  0.104103  0.189280

2017  0.6 -0.492 -0.45 -0.32  0.084595 -0.268721

2018 -0.9  0.585  1.78  1.16 -1.217344 -1.947052

2019 -1.2  0.306 -0.01  1.62 -0.006176  0.676129

2020  0.9  0.631  1.11  0.59 -0.398920 -0.165507"""

)


df= pd.read_fwf(infile).set_index('Date')


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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