<p>您可以使用<code>cumcount</code>:</p>
<pre><code>df = df.sort_values(['date', 'NATR'])
df['Points'] = df.groupby('date').cumcount() + 1
df
Out[1]:
date ticker NATR Points
1 2001-02-23 ADP 3.300756 1
2 2001-02-23 AGL1 4.443902 2
0 2001-02-23 ABC 9.189955 3
5 2001-02-24 ALQ 2.538381 1
3 2001-02-24 ALD 7.73358 2
4 2001-02-24 ALL 8.217827999999999 3
6 2001-02-24 ALU 10.39489 4
9 2001-02-25 AMP 4.012471 1
8 2001-02-25 AMC 4.173612 2
7 2001-02-25 ALZ 4.970826000000001 3
10 2001-02-25 ANN 8.280536999999999 4
11 2001-02-26 ANZ 3.775175 1
14 2001-02-26 ART 4.439083999999999 2
15 2001-02-26 ASX 5.089084 3
13 2001-02-26 AQP 7.253564999999999 4
12 2001-02-26 AOR 7.413380999999999 5
16 2001-02-26 AUN 51.088334 6
18 2001-02-27 AWC 5.429162 1
17 2001-02-27 AUT1 10.018372 2
19 2001-02-27 AWE 10.349716 3
</code></pre>
<p>如果您想从那里把它排序回来,那么就执行<code>df = df.sort_index()</code>。不过排名答案更好</p>