使用
replace:
df = df.replace({0:1, 1:0})
df = np.logical_xor(df,1).astype(int)
或者更快:
df = pd.DataFrame(np.logical_xor(df.values,1).astype(int),columns=df.columns, index=df.index)
样品:
np.random.seed(12)
df = pd.DataFrame(np.random.choice([0,1], size=[10,3]))
print (df)
0 1 2
0 1 1 0
1 1 1 0
2 1 1 0
3 0 0 1
4 0 1 1
5 1 0 1
6 0 0 0
7 1 0 0
8 1 0 1
9 1 0 0
df = df.replace({0:1, 1:0})
print (df)
0 1 2
0 0 0 1
1 0 0 1
2 0 0 1
3 1 1 0
4 1 0 0
5 0 1 0
6 1 1 1
7 0 1 1
8 0 1 0
9 0 1 1
另一种方案:
df = (~df.astype(bool)).astype(int)
print (df)
0 1 2
0 0 0 1
1 0 0 1
2 0 0 1
3 1 1 0
4 1 0 0
5 0 1 0