我有一个熊猫数据框,其中有2列,分别是数字和 Random_Score :
Digits Random_Score
000000 31
000001 131
000002 132
000003 74
列数字包含长度为6的0到9的数字的所有组合,所以我总共有10 ^ 6行。当前,我想创建一个新列 Number ,这样,对于整个数据框,前10000行的值将为1,其后10000行2的值将依此类推。最终的熊猫数据框应如下所示:
Digits Random_Score Number
000000 31 1
000001 131 1
000002 132 1
.
.
.
999999 74 100
我曾尝试使用Iterrows解决此问题,但是我没有走得太远,因此我没有在提交中包含代码。你们能给我提些建议吗?
答案 0 :(得分:1)
使用整数除以10000
并添加1
:
np.random.seed(123)
N = 1000000
d = {
'Digits': np.arange(N),
'Random_Score': np.random.randint(100, size=N),
}
df = pd.DataFrame(d)
df['Digits'] = df['Digits'].astype(str).str.zfill(6)
#if default RangeIndex
#df['Number'] = df.index // 10000 + 1
#any index
df['Number'] = np.arange(len(df)) // 10000 + 1
print (df)
Digits Random_Score Number
0 000000 66 1
1 000001 92 1
2 000002 98 1
3 000003 17 1
4 000004 83 1
... ... ...
999995 999995 36 100
999996 999996 76 100
999997 999997 54 100
999998 999998 76 100
999999 999999 43 100
[1000000 rows x 3 columns]