如何解决Pandas 中的哈希表映射
我还有另一个(哈希)表,用于将索引范围映射到满足特定条件的特定组。
映射索引范围以将它们作为附加列包含在我的熊猫数据集中的有效方法是什么?
举个例子,假设数据集如下所示:
In [18]:
print(df_test)
Out [19]:
ID
0 13
1 14
2 15
3 16
4 17
5 18
6 19
7 20
8 21
9 22
10 23
11 24
12 25
13 26
14 27
15 28
16 29
17 30
18 31
19 32
现在具有索引范围的哈希表如下所示:
In [20]:
print(df_hash)
Out [21]:
ID_first
0 0
1 2
2 10
其中索引指定了我需要的组号。
我尝试做这样的事情:
for index in range(df_hash.size):
try:
df_test.loc[df_hash.ID_first[index]:df_hash.ID_first[index + 1],'Group'] = index
except:
df_test.loc[df_hash.ID_first[index]:,'Group'] = index
效果很好,除了它在哈希表数据帧的长度(数十万行)上循环时确实很慢。它产生以下答案(我想要):
In [23]:
print(df_test)
Out [24]:
ID Group
0 13 0
1 14 0
2 15 1
3 16 1
4 17 1
5 18 1
6 19 1
7 20 1
8 21 1
9 22 1
10 23 2
11 24 2
12 25 2
13 26 2
14 27 2
15 28 2
16 29 2
17 30 2
18 31 2
19 32 2
有没有办法更有效地做到这一点?
解决方法
您可以使用 ID_first 将 df_test 的索引 Actual Output:
Collins
collinsab12@hotmail.com
Enter name: Enter your website name: Entered name: Collins
Entered website name: collinsab12@hotmail.com
到 df_hash 的索引,然后 map
。需要构造一个系列,因为 pd.Index 类没有填充方法。
ffill
,
df_test['group'] = df_test['ID'].isin(df_hash['ID_first']).cumsum() #.sub(1)
print(df_test)
ID group
0 0 1
1 1 1
2 2 2
3 3 2
4 4 2
5 5 2
6 6 2
7 7 2
8 8 2
9 9 2
10 10 3
11 11 3
12 12 3
13 13 3
14 14 3
15 15 3
16 16 3
17 17 3
18 18 3
19 19 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。