我在下面有一个数据框:
date ticker NATR
0 2001-02-23 ABC 9.189955
1 2001-02-23 ADP 3.300756
2 2001-02-23 AGL1 4.443902
3 2001-02-24 ALD 7.733580
4 2001-02-24 ALL 8.217828
5 2001-02-24 ALQ 2.538381
6 2001-02-24 ALU 10.394890
7 2001-02-25 ALZ 4.970826
8 2001-02-25 AMC 4.173612
9 2001-02-25 AMP 4.012471
10 2001-02-25 ANN 8.280537
11 2001-02-26 ANZ 3.775175
12 2001-02-26 AOR 7.413381
13 2001-02-26 AQP 7.253565
14 2001-02-26 ART 4.439084
15 2001-02-26 ASX 5.089084
16 2001-02-26 AUN 51.088334
17 2001-02-27 AUT1 10.018372
18 2001-02-27 AWC 5.429162
19 2001-02-27 AWE 10.349716
我需要根据每个日期最小的“NATR”插入计分记录。每个日期的最低“NATR”得到1分,并根据每个日期列表的大小连续增加。例如:
date ticker NATR Points
0 2001-02-23 ABC 9.189955 3
1 2001-02-23 ADP 3.300756 1
2 2001-02-23 AGL1 4.443902 2
3 2001-02-24 ALD 7.733580 2
4 2001-02-24 ALL 8.217828 3
5 2001-02-24 ALQ 2.538381 1
我尝试了以下代码,返回一个值错误:
df.insert(loc=3, column='points',value=np.arange(len(df.groupby('date'))))
当我删除df.groupby('date')
时,会为数据帧的整个长度添加点,而不是为每个日期重置
您可以使用^{} +^{} :
您可以使用
cumcount
:如果您想从那里把它排序回来,那么就执行
df = df.sort_index()
。不过排名答案更好相关问题 更多 >
编程相关推荐