我有一个与数据框行对应的ID列表。从id列表中,我想增加与该id行相交的另一列的值。
我的想法是这样的:
ids = [1,2,3,4]
for id in ids:
my_df.loc[my_df['id']] == id]['other_column'] += 1
但这不起作用。我怎样才能改变原来的df,my_df
?
答案 0 :(得分: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
答案 1 :(得分:1)
ids是独一无二的,对吗?如果是这样,您可以直接将id
放入df
:
ids = [1,2,3,4]
for id in ids:
df.loc[id,'column_name'] = id+1