【发布时间】:2020-02-25 00:22:18
【问题描述】:
我有一个包含 1000 多列的数据框,并且我有一个预定义的组列表。我想将每个单元格值与每个组边界进行比较,并创建一个新列来分配组名。我已经写了for loops,但处理它花了超过 5 分钟。有没有更有效的方法来实现这一目标?谢谢
这是我的数据框
Frequency
21.0
18.0
16.0
10.0
10.0
9.0
10.0
10.0
5.0
8.0
还有我预定义的组列表
> groups
[(3, 5), (6, 10), (11, 30)]
我想得到的是
Frequency Group
21.0 11-30
18.0 11-30
16.0 11-30
10.0 6-10
10.0 6-10
9.0 6-10
10.0 6-10
10.0 6-10
5.0 3-5
8.0 6-10
这是我的代码
for i in range(0, len(fre_table["Frequency"])):
for j in range(0, len(groups)):
if fre_table["Frequency"][i] >= groups[j][0] and fre_table["Frequency"][i] <= groups[j][1]:
break
fre_table['Group'][i] = "{}-{}".format(groups[j][0], groups[j][1])
【问题讨论】:
标签: python pandas dataframe for-loop