2016-09-12 4 views
3

У меня есть список идентификаторов, соответствующих строке фрейма данных. Из этого списка идентификаторов я хочу увеличить значение другого столбца, который пересекает строку этого идентификатора.Pandas: как увеличить значение ячейки столбца на основе списка идентификаторов

То, что я имел в виду что-то вроде этого:

ids = [1,2,3,4] 

for id in ids: 
    my_df.loc[my_df['id']] == id]['other_column'] += 1 

Но это не работает. Как я могу мутировать исходный df, my_df?

ответ

3

попробовать это:

my_df.loc[my_df['id'].isin(ids), 'other_column'] += 1 

Демо:

In [233]: ids=[0,2] 

In [234]: df = pd.DataFrame(np.random.randint(0,3, (5, 3)), columns=list('abc')) 

In [235]: df 
Out[235]: 
    a b c 
0 2 2 1 
1 1 0 2 
2 2 2 0 
3 0 2 1 
4 0 1 2 

In [236]: df.loc[df.a.isin(ids), 'c'] += 100 

In [237]: df 
Out[237]: 
    a b c 
0 2 2 101 
1 1 0 2 
2 2 2 100 
3 0 2 101 
4 0 1 102 
+0

Будет ли это в цикле? – AlanH

1

идентификаторы уникальны, правильно? Если да, то вы можете сразу поместить id в df:

ids = [1,2,3,4] 

for id in ids: 
    df.loc[id,'column_name'] = id+1 
Смежные вопросы