我有一个数据框的索引列表,我想更改列表中不在的所有行的列的值。
这是我尝试的:
df.ix[~idx,'column1'] = 0
但是我收到了这个错误:
TypeError: bad operand type for unary ~: 'list'
我该如何做到这一点?
答案 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