替换索引中按列的值

问题描述 投票:0回答:2

我在数据框中的列包含列表中值的索引。喜欢:

id | idx  
A  |  0  
B  |  0  
C  |  2  
D  |  1  

list  = ['a', 'b', 'c', 'd'] 

我想用对应索引列表中的值替换idx列中大于0的每个值,以便:

id | idx  
A  |  0  
B  |  0  
C  |  c     # list[2]
D  |  b     # list[1]

我试图用循环来做到这一点,但是它什么都不做...尽管如果我移动['idx'],它将替换该行上的所有值

for index in df.idx.values:
    if index >=1:
        df[df.idx==index]['idx'] = list[index]
python pandas
2个回答
2
投票

不要像变量名那样使用list,因为builtin(Python代码字)。

然后使用:

L  = ['a', 'b', 'c', 'd'] 
df['idx'] = df['idx'].mask(df['idx'] >=1, df['idx'].map(dict(enumerate(L))))
print (df)
  id idx
0  A   0
1  B   0
2  C   c
3  D   b

1
投票

为索引大于0的项创建字典,然后将其与replace一起使用以获取输出:

mapping = dict((key,val) for key,val in enumerate(l) if key > 0)

print(mapping)

{1: 'b', 2: 'c', 3: 'd'}


df.replace(mapping)


id  idx
0   A   0
1   B   0
2   C   c
3   D   b

注意:我将list变量名称更改为l

© www.soinside.com 2019 - 2024. All rights reserved.