Jae*_*ael 1 python dataframe pandas
我有一个巨大的数据框。我想根据某个标准对一列中的值进行分组,并向另一列添加一个新值:对于number从 1000 到 1999列中的所有值,为该group列分配 1 。从 2000 年到 2999 年分配 2,以此类推。
为了更好地理解一个例子:我有数据框 df_test
number
0 1200
1 1300
2 1450
3 1555
4 2300
5 2341
6 2355
7 2800
8 3003
9 4010
Run Code Online (Sandbox Code Playgroud)
我想按照上面的解释对值进行分组,从而得到以下新数据框。
number group
0 1200 1
1 1300 1
2 1450 1
3 1555 1
4 2300 2
5 2341 2
6 2355 2
7 2800 2
8 3003 3
9 4010 4
Run Code Online (Sandbox Code Playgroud)
我用以下循环尝试过:
for i in range(len(df_test)):
if df_test.number[i] >= 1000 and df_test.number[i] < 2000:
df_test.at[i,"group"] = 1
elif df_test.number[i] >= 2000 and df_test.number[i] < 3000:
df_test.at[i,"group"] = 2
elif df_test.number[i] >= 3000 and df_test.number[i] < 4000:
df_test.at[i,"group"] = 3
elif df_test.number[i] >= 4000 and df_test.number[i] < 5000:
df_test.at[i,"group"] = 4
Run Code Online (Sandbox Code Playgroud)
我确实工作,但由于我的数据框很大,所以速度很慢。有谁知道实现相同目标的更快方法?:-)
尝试使用//(它是地板div)
df['groups'] = df.number // 1000
Out[1326]:
number groups
0 1200 1
1 1300 1
2 1450 1
3 1555 1
4 2300 2
5 2341 2
6 2355 2
7 2800 2
8 3003 3
9 4010 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |