Могут быть много решений. В комментариях кодового блока (#
) вы найдете несколько ссылок для получения дополнительной информации:
import pandas as pd
import numpy as np
import random
import string
k = 5
N = 10
#http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randint.html
#http://stackoverflow.com/a/2257449/2901002
df = pd.DataFrame({ 'A' : range(1, N + 1 ,1),
'B' : np.random.randint(k, k + 100 , size=N),
'C' : pd.Series(random.choice(string.ascii_uppercase) for _ in range(N)) })
print df
# A B C
#0 1 60 O
#1 2 94 L
#2 3 10 W
#3 4 94 X
#4 5 60 O
#5 6 20 K
#6 7 58 Y
#7 8 40 I
#8 9 49 X
#9 10 65 S
import pandas as pd
import numpy as np
k = 5
N = 10
alphabet = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
#http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.choice.html
df = pd.DataFrame({ 'A' : range(1, N + 1 ,1),
'B' : np.random.randint(k, k + 100 , size=N),
'C' : np.random.choice(np.array(alphabet, dtype="|S1"), N) })
print df
# A B C
#0 1 16 U
#1 2 76 X
#2 3 101 N
#3 4 61 F
#4 5 52 J
#5 6 62 A
#6 7 99 L
#7 8 23 N
#8 9 75 D
#9 10 16 Q
Для SQL 2005 и
SELECT ROW_NUMBER() OVER( ORDER BY SomeColumn ) AS 'rownumber',*
FROM YourTable
на 2000 необходимо сделать что-то вроде этого
SELECT IDENTITY(INT, 1,1) AS Rank ,VALUE
INTO #Ranks FROM YourTable WHERE 1=0
INSERT INTO #Ranks
SELECT SomeColumn FROM YourTable
ORDER BY SomeColumn
SELECT * FROM #Ranks
Order By Ranks
, см. также здесь Номер строки
Попробуйте ROW_NUMBER ()
http://msdn.microsoft.com/en-us/library/ms186734.aspx
Пример:
SELECT
col1,
col2,
ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl
Это ужасно и работает плохо, но технически это работает над любой таблицей по крайней мере с одним уникальным полем И работами в SQL 2000.
SELECT (SELECT COUNT(*) FROM myTable T1 WHERE T1.UniqueField<=T2.UniqueField) as RowNum, T2.OtherField
FROM myTable T2
ORDER By T2.UniqueField
Примечание: Если Вы используете этот подход и добавляете оператор Where к внешнему ВЫБОРУ, у Вас есть к добавленному он к внутреннему ВЫБОРУ также, если Вы хотите, чтобы числа были непрерывны.