Python 熊猫会在复制的表中删除一列,但原始表会随之删除该列
我试图理解这个问题,但我没有找到解决方案,也许搜索问题是错误的。为了详细说明我的问题,我复制了一张名为toy_table的原始表格,复制的表格名为copy_toy_table 我只是复制了一个表,名为copy_toy_table 然后,我想通过基于列过滤掉某些值来删除copy_toy_表中的行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 ,
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