Pandas操作中有个很奇怪的特性,就是操作不是对自身操作的。
比如:
a = pd.DataFrame({'a':[1,2,3],'b':[3,2,1],'c':[1,1,1]})
b = pd.DataFrame({'a':[1,1],'b':[2,2],'c':[3,3]})
c = a.append(b)
print(a)
print(b)
print(c)
a b c
0 1 3 1
1 2 2 1
2 3 1 1
a b c
0 1 2 3
1 1 2 3
a b c
0 1 3 1
1 2 2 1
2 3 1 1
0 1 2 3
1 1 2 3
结果中a未做改变,只是将append的结果传递到了c。
对drop_duplicates同样如此:
b= a.drop_duplicates('c')
print(a)
print(b)
a b c
0 1 3 1
1 2 2 1
2 3 1 1
a b c
0 1 3 1
a没有改变,b是drop的结果。
那么如果想要直接改变a有什么办法吗?直接赋值给a当然是办法,还有一个办法就是使用inplace这个参数,缺省值是False,为True的时候改变自身。
b = a.drop_duplicates('c',inplace=True)
print(a)
print(b)
a b c
0 1 3 1
None
此时a改变了,而b为none,实际上此时不要赋值。