Python 熊猫会在复制的表中删除一列,但原始表会随之删除该列

Python 熊猫会在复制的表中删除一列,但原始表会随之删除该列,python,pandas,Python,Pandas,我试图理解这个问题,但我没有找到解决方案,也许搜索问题是错误的。为了详细说明我的问题,我复制了一张名为toy_table的原始表格,复制的表格名为copy_toy_table 我只是复制了一个表,名为copy_toy_table 然后,我想通过基于列过滤掉某些值来删除copy_toy_表中的行 delete_index = copy_toy_table[copy_toy_table['a'] < 200 ].index copy_toy_table.drop(delete_index ,

我试图理解这个问题,但我没有找到解决方案,也许搜索问题是错误的。为了详细说明我的问题,我复制了一张名为toy_table的原始表格,复制的表格名为copy_toy_table

我只是复制了一个表,名为copy_toy_table

然后,我想通过基于列过滤掉某些值来删除copy_toy_表中的行

delete_index = copy_toy_table[copy_toy_table['a'] < 200 ].index
copy_toy_table.drop(delete_index , inplace=True)
根据需要,删除了列“a”中值小于200的行

然而,当我检查原始表toy_table时,我发现在'a'列中小于200的同一行被删除了。我假设玩具桌不会受到影响,因为我只在复制玩具桌上放置


我渴望得到你的建议。我真的很感激,并将从中学习。谢谢。

只需制作一份真实的副本,而不是参考:

copy_toy_table = toy_table.copy()
解释

当您调用copy\u toy\u table=toy\u table时,您没有创建副本,您用另一个名称引用了同一对象,除非您要再次引用它,否则您对它所做的所有操作都将反映到另一个对象

此外,你可以做

toy_table = pd.DataFrame(np.array([[100, 2, 3], [288, 8, 9], [105, 5, 6], [207, 10, 9]]), columns=['a', 'b', 'c'])
delete_index = toy_table [toy_table['a'] < 200 ].index
copy_toy_table = toy_table.drop(delete_index) # without inplace arg

copy_toy_table 
Out[x]: 
     a   b  c
1  288   8  9
3  207  10  9

toy_table
Out[x + 1]: 
     a   b  c
0  100   2  3
1  288   8  9
2  105   5  6
3  207  10  9

只需制作一份真实的副本,而不是参考:

copy_toy_table = toy_table.copy()
解释

当您调用copy\u toy\u table=toy\u table时,您没有创建副本,您用另一个名称引用了同一对象,除非您要再次引用它,否则您对它所做的所有操作都将反映到另一个对象

此外,你可以做

toy_table = pd.DataFrame(np.array([[100, 2, 3], [288, 8, 9], [105, 5, 6], [207, 10, 9]]), columns=['a', 'b', 'c'])
delete_index = toy_table [toy_table['a'] < 200 ].index
copy_toy_table = toy_table.drop(delete_index) # without inplace arg

copy_toy_table 
Out[x]: 
     a   b  c
1  288   8  9
3  207  10  9

toy_table
Out[x + 1]: 
     a   b  c
0  100   2  3
1  288   8  9
2  105   5  6
3  207  10  9
设置:

设置:


你应该复制一个副本。复制这个副本不会创建一个副本。Hi Anky和Dani,谢谢你的建议,现在我明白了,我真的很感谢你的意见!你应该复制一个副本。复制这个副本不会创建一个副本。Hi Anky和Dani,谢谢你的建议,现在我明白了,我真的很感谢你的意见!非常感谢您的解释,非常感谢您的帮助!非常感谢您的解释,非常感谢您的帮助!谢谢你的解释!谢谢你的解释!
import pandas as pd
import numpy as np
toy_table = pd.DataFrame(np.array([[100, 2, 3], [288, 8, 9], [105, 5, 6], [207, 10, 9]]), columns=['a', 'b', 'c'])
toy_table

copy_toy_table = toy_table.copy()
copy_toy_table

delete_index = copy_toy_table[copy_toy_table['a'] < 200 ].index
copy_toy_table.drop(delete_index , inplace=True)
In[1]: copy_toy_table
Out[2]: 
     a   b  c
1  288   8  9
3  207  10  9

toy_table
Out[3]: 
     a   b  c
0  100   2  3
1  288   8  9
2  105   5  6
3  207  10  9