gpt4 book ai didi

由列表索引的python数据框

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:48 24 4
gpt4 key购买 nike

我正在尝试获取一个包含有限集中重复值的 DataFrame 列,并用索引号替换这些值,因此如果值为 [200,20,1000,1],则它们出现的索引将为 [1 ,2,3,4]。实际数据示例为:

0    aaa
1 aaa
2 bbb
3 aaa
4 bbb
5 bbb
6 ccc
7 ddd
8 ccc
9 ddd

期望的输出是

0    1
1 1
2 2
3 1
4 2
5 2
6 4
7 3
8 4
9 3

我想更改对数字没有意义的值。仅此而已...我不关心索引的顺序,即 1 可以是 3 等等,只要顺序一致即可。也就是说,我不在乎 ['aaa','bbb','ccc','ddd']将由 [1,2,3,4] 索引或 [2,4,3,1] .

假设 DF 名称是 tbl,我只想更改列 'aaa' 中的一部分索引。让我们用 tbl_ind 表示这些索引。我想要这样做的方式是:

tmp_r = tbl[tbl_ind]
un_r_ind = np.unique(tmp_r)
for r_ind in range(len(un_r_ind)):
r_ind_ind = np.array(np.where(tmp_r == un_r_ind[r_ind])[0])
for j_ind in range(len(r_ind_ind)):
tbl['aaa'].iloc[tbl_ind[r_ind_ind[j_ind]]] = r_ind

它有效。而且它在大数据集上真的很慢。Python 不允许更新 tbl['aaa'].iloc[tbl_ind[r_ind_ind]]因为它是索引列表....请帮助?怎么可能加快速度?非常感谢!

最佳答案

我会构造一个包含您要替换的值的字典,然后调用 map:

In [7]:

df
Out[7]:
data
0
1 aaa
2 bbb
3 aaa
4 bbb
5 bbb
6 ccc
7 ddd
8 ccc
9 ddd
In [8]:

d = {'aaa':1,'bbb':2,'ccc':3,'ddd':4}
df['data'] = df['data'].map(d)
df

Out[8]:
data
0
1 1
2 2
3 1
4 2
5 2
6 3
7 4
8 3
9 4

关于由列表索引的python数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com