Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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_Loops - Fatal编程技术网

Python 如何根据该组中的行数指定列值

Python 如何根据该组中的行数指定列值,python,pandas,loops,Python,Pandas,Loops,创建一些测试数据: import pandas as pd import numpy as np ID = pd.DataFrame(np.random.randint(0,1000000,size=(100, 1)), columns=['ID']) Prob = pd.DataFrame(np.random.randint(0, 100,size=(100, 1)), columns=['Probability'])/100 cuts = [{'flag': 'L', 'cut': 4

创建一些测试数据:

import pandas as pd
import numpy as np

ID = pd.DataFrame(np.random.randint(0,1000000,size=(100, 1)), columns=['ID'])
Prob = pd.DataFrame(np.random.randint(0, 100,size=(100, 1)), columns=['Probability'])/100


cuts = [{'flag': 'L', 'cut': 44},
         {'flag': 'M', 'cut': 31},
         {'flag': 'H', 'cut': 25}]

cuts = pd.DataFrame(cuts)

df = pd.concat([ID.reset_index(drop=True), Prob], axis=1)
df = df.sort_values(by=['Probability'])
df["flag"] = np.nan
我有两个数据集,一个是来自预测模型的概率列表,另一个是根据给定列表的长度计算的切点列表。我想找到一种有效的方法将这些值分配给df的“flag”列

对于本例,前44行将被分配为“L”,接下来的31行将被分配为“M”,最后25行将被分配为“H”

我的环境有更多不同的标志值和数百万行,但为了简单起见,我在示例中使用了100行和3个标志


如何使用“下一个x行数”而不是索引或其他引用键来分配这些标志

使用
重复

df['flag'] = cuts['flag'].repeat(cuts['cut']).values
输出:

        ID  Probability flag
1   803927         0.02    L
50  356764         0.03    L
52  132415         0.03    L
28  699693         0.03    L
20  296581         0.03    L
.
.
.
76  236620         0.97    H
70   56385         0.99    H
92  205281         0.99    H
75  804810         0.99    H
29  773553         0.99    H

谢谢,这比我想象的要简单得多。