设df为数据的数据帧,dfcopy为其副本
data = [[1,['A1']],[3,['A2','A2','A1']], [1,['A2']]]
df = pd.DataFrame(data)
dfcopy = df.copy()
0 1
0 1 ['A1']
1 3 ['A2', 'A2', 'A1']
2 1 ['A2']
df的id为1874789864000,dfcopy的id为1874789865736。与预期不同。 现在我想删除dfcopy[1,1]位置的one'A2',并用one减少dfcopy[1,0](第0列是第1列中列表的长度)
dfcopy.at[1,0]=dfcopy.at[1,0]-1
df =
0 1
0 1 ['A1']
1 3 ['A2', 'A2', 'A1']
2 1 ['A2']
dfcopy =
0 1
0 1 ['A1']
1 2 ['A2', 'A2', 'A1']
2 1 ['A2']
如我所料,第0列中的数量仅在dfcopy中减少。 现在我删除元素dfcopy[1,1]的'A2'
dfcopy.at[1,1].remove('A2')
df =
0 1
0 1 ['A1']
1 3 [ 'A2', 'A1']
2 1 ['A2']
dfcopy =
0 1
0 1 ['A1']
1 2 [ 'A2', 'A1']
2 1 ['A2']
id仍然与以前相同(未显示),但现在我的df在df[1,1]位置发生了更改
为什么在我定义副本时会发生这种情况,如何修复这种情况?
intended output:
df =
0 1
0 1 ['A1']
1 3 [ 'A2', 'A2', 'A1']
2 1 ['A2']
dfcopy =
0 1
0 1 ['A1']
1 2 [ 'A2', 'A1']
2 1 ['A2']
我看了很多纪录片和这里的Stackoverflow,但不明白为什么会这样。你知道吗
解决方法
data = [[1,['A1']],[3,['A2','A2','A1']], [1,['A2']]]
df = pd.DataFrame(data)
dfcopy = df.copy()
dfcopy.at[1,0]=dfcopy.at[1,0]-1
list = list(dfcopy.at[1,1])
list.remove('A2')
dfcopy.at[1,1] = list
df =
0 1
0 1 ['A1']
1 3 [ 'A2', 'A2', 'A1']
2 1 ['A2']
dfcopy =
0 1
0 1 ['A1']
1 2 [ 'A2', 'A1']
2 1 ['A2']
可能对你有用!你知道吗
正如评论中提到的
具有默认属性
,但它不是你想要的那么深
相关问题 更多 >
编程相关推荐