更改数据帧的值,但列表中的索引除外

时间:2016-05-19 12:42:34

标签: python pandas

我有一个数据框的索引列表,我想更改列表中不在的所有行的列的值。

这是我尝试的:

df.ix[~idx,'column1'] = 0

但是我收到了这个错误:

TypeError: bad operand type for unary ~: 'list'

我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

针对要排除的行标签对索引使用difference,并将其传递给loc

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

Out[108]:
          a         b         c
0  0.759272 -1.633137  2.193676
1 -0.249800  0.092365 -1.947792
2 -0.601363 -0.171465  0.136735
3  0.242762 -1.406402  0.197774
4 -1.135406 -0.298128  2.234334

In [109]:
idx = [1,3]
df.loc[df.index.difference(idx),'a'] = 0
df

Out[109]:
          a         b         c
0  0.000000 -1.633137  2.193676
1 -0.249800  0.092365 -1.947792
2  0.000000 -0.171465  0.136735
3  0.242762 -1.406402  0.197774
4  0.000000 -0.298128  2.234334