argmax()或idxmax()没有提供最大值所在的正确索引

2024-10-01 02:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个子集dataframe,并试图找到索引,其中volume列中是max volume。在本例中,它应该是索引1428,但是使用argmax或idxmcx,它得到1431

combine1
Out[381]: 
       folder                   fn    volume
1428  SF_20141231  IF1501_20141231.csv  162.0000
1429  SF_20141231  IF1502_20141231.csv    4.0000
1430  SF_20141231  IF1503_20141231.csv    6.0000
1431  SF_20141231  IF1506_20141231.csv    7.0000
1432  SF_20141231  TF1503_20141231.csv    4.0000
1433  SF_20141231  TF1506_20141231.csv    0.0000
1434  SF_20141231  TF1509_20141231.csv    0.0000

我要用的地方

^{pr2}$

这两个都不正确。怎么解决这个问题?在


Tags: csvdataframesffolderoutmax子集fn
1条回答
网友
1楼 · 发布于 2024-10-01 02:19:44

@user9240544,您需要将列转换为float使用\u numeric。请参见下面的模型:

您注意到,如果您删除combine1['volume'] = pd.to_numeric(combine1['volume'])行,您将得到'volume'作为字符串,这就是您得到的结果。在

raw_data = {
    'folder': ['SF_20141231','SF_20141231','SF_20141231','SF_20141231','SF_20141231','SF_20141231','SF_20141231'], 
        'fn': ['IF1501_20141231.csv','IF1502_20141231.csv','IF1503_20141231.csv','IF1506_20141231.csv','TF1503_20141231.csv','TF1506_20141231.csv','TF1509_20141231.csv'], 
        'volume': ['162.0000','4.0000','6.0000','7.0000','4.0000','0.0000','0.0000']}

combine1 = pd.DataFrame(raw_data,index=[1428,1429,1430,1431,1432,1433,1434])
combine1['volume'] = pd.to_numeric(combine1['volume'])
combine1['volume'].idxmax(axis=0)
combine1['volume'].argmax()

相关问题 更多 >