2016-09-12 12 views
3

データフレームの行に対応するIDのリストがあります。そのIDのリストから、そのIDの行と交差する別の列の値を増やしたいとします。私が考えていた何パンダ:idsのリストに基づいて列のセル値をインクリメントする方法

はこのようなものだった:

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は、正しいユニークですか?もしそうなら、あなたは直接dfidを配置することができます:

ids = [1,2,3,4] 

for id in ids: 
    df.loc[id,'column_name'] = id+1 
関連する問題