我希望能够使用布尔索引来切片DataFrame,并获得一份副本,然后对该副本进行操作而不影响原始的DataFrame。
从答案中可以看出,使用Boolean数组进行选择并使用
从答案中可以看出,使用Boolean数组进行选择并使用
.loc
会返回一份副本,但是,如果我尝试更改该副本,则会遇到SettingWithCopyWarning
。那么这是否是正确的方法:import numpy as np
import pandas as pd
d1 = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
# create a new dataframe from the sliced copy
d2 = pd.DataFrame(d1.loc[d1.a > 1, :])
# do stuff with d2, keep d1 unchanged
SettingWithCopyWarning
只是一个警告,它告诉您对该DataFrame所做的修改不会改变原始DataFrame。您可以完全禁用它们或在赋值后使用d2.is_copy = None
。 - ayhan