Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将排序列添加到数据框_Python_Pandas_Dataframe - Fatal编程技术网

Python 将排序列添加到数据框

Python 将排序列添加到数据框,python,pandas,dataframe,Python,Pandas,Dataframe,我知道这个问题可能看起来很琐碎,但我在任何地方都找不到解决办法。我有一个非常大的熊猫数据帧df,看起来像这样: conference IF2013 AR2013 0 HOTMOBILE 16.333333 31.50 1

我知道这个问题可能看起来很琐碎,但我在任何地方都找不到解决办法。我有一个非常大的熊猫数据帧
df
,看起来像这样:

                                            conference     IF2013  AR2013
0                                            HOTMOBILE  16.333333   31.50
1                                                 FOGA  13.772727   60.00
2                                              IEA/AIE  10.433735   28.20
3    IEEE Real-Time and Embedded Technology and App...  10.250000   29.00
4                  Symposium on Computational Geometry   9.880342   35.00
5                                                 WISA   9.693878   43.60
6                                                 ICMT   8.750000   22.00
7                                              Haskell   8.703704   39.00
                                               conference     IF2013    AR2013  Ranking 
    0                                            HOTMOBILE  16.333333   31.50   1  
    1                                                 FOGA  13.772727   60.00   2
    2                                              IEA/AIE  10.433735   28.20   3
    3    IEEE Real-Time and Embedded Technology and App...  10.250000   29.00   4  
我想在末尾添加一个额外的列,将其排序为1、2、3、4等。因此,它看起来如下所示:

                                            conference     IF2013  AR2013
0                                            HOTMOBILE  16.333333   31.50
1                                                 FOGA  13.772727   60.00
2                                              IEA/AIE  10.433735   28.20
3    IEEE Real-Time and Embedded Technology and App...  10.250000   29.00
4                  Symposium on Computational Geometry   9.880342   35.00
5                                                 WISA   9.693878   43.60
6                                                 ICMT   8.750000   22.00
7                                              Haskell   8.703704   39.00
                                               conference     IF2013    AR2013  Ranking 
    0                                            HOTMOBILE  16.333333   31.50   1  
    1                                                 FOGA  13.772727   60.00   2
    2                                              IEA/AIE  10.433735   28.20   3
    3    IEEE Real-Time and Embedded Technology and App...  10.250000   29.00   4  

我似乎不知道如何添加一个只包含一系列连续数字的填充额外列。

您可以添加范围为
的列。

df['Ranking'] = range(1, len(df) + 1)
例如:

import pandas as pd
from io import StringIO

data = """
                                        conference     IF2013  AR2013
                                        HOTMOBILE  16.333333   31.50
                                             FOGA  13.772727   60.00
                                          IEA/AIE  10.433735   28.20
IEEE Real-Time and Embedded Technology and App...  10.250000   29.00
              Symposium on Computational Geometry   9.880342   35.00
                                             WISA   9.693878   43.60
                                             ICMT   8.750000   22.00
                                          Haskell   8.703704   39.00

"""

df = pd.read_csv(StringIO(data), sep=' \s+')

df['Ranking'] = range(1, len(df) + 1)

In [183]: df
Out[183]:
                                          conference     IF2013  AR2013        Ranking  
0                                          HOTMOBILE  16.333333    31.5            1
1                                               FOGA  13.772727    60.0            2
2                                            IEA/AIE  10.433735    28.2            3
3  IEEE Real-Time and Embedded Technology and App...  10.250000    29.0            4
4                Symposium on Computational Geometry   9.880342    35.0            5
5                                               WISA   9.693878    43.6            6
6                                               ICMT   8.750000    22.0            7
7                                            Haskell   8.703704    39.0            8
编辑

基准:

In [202]: %timeit df['rank'] = range(1, len(df) + 1)
10000 loops, best of 3: 127 us per loop

In [203]: %timeit df['rank'] = df.AR2013.rank(ascending=False)
1000 loops, best of 3: 248 us per loop
您可以尝试:

df['rank'] = df.index + 1

print df
#                                          conference     IF2013  AR2013  rank
#0                                          HOTMOBILE  16.333333    31.5     1
#1                                               FOGA  13.772727    60.0     2
#2                                            IEA/AIE  10.433735    28.2     3
#3  IEEE Real-Time and Embedded Technology and App...  10.250000    29.0     4
#4                Symposium on Computational Geometry   9.880342    35.0     5
#5                                               WISA   9.693878    43.6     6
#6                                               ICMT   8.750000    22.0     7
#7                                            Haskell   8.703704    39.0     8
或与参数
升序=False一起使用:

df['rank'] = df['conference'].rank(ascending=False)
print df
#                                          conference     IF2013  AR2013  rank
#0                                          HOTMOBILE  16.333333    31.5     1
#1                                               FOGA  13.772727    60.0     2
#2                                            IEA/AIE  10.433735    28.2     3
#3  IEEE Real-Time and Embedded Technology and App...  10.250000    29.0     4
#4                Symposium on Computational Geometry   9.880342    35.0     5
#5                                               WISA   9.693878    43.6     6
#6                                               ICMT   8.750000    22.0     7
#7                                            Haskell   8.703704    39.0     8

我猜您正在寻找
rank
函数:

df['rank'] = df['IF2013'].rank()
这样,您的结果将与索引无关