Python 复制包含集合的DataFrame列
我想将一列从数据帧复制到一个新列中。问题是它包含集合Python 复制包含集合的DataFrame列,python,pandas,Python,Pandas,我想将一列从数据帧复制到一个新列中。问题是它包含集合 xy=pd.DataFrame(columns=[2]) xy.at[1,2]={1,2,3,4} xy[3]=xy[2].copy() xy.at[1,3].add(5) 我想得到这个: 2 3 1 {1, 2, 3, 4} {1, 2, 3, 4, 5} 但是xy返回了这个: 2 3 1 {1, 2, 3, 4
xy=pd.DataFrame(columns=[2])
xy.at[1,2]={1,2,3,4}
xy[3]=xy[2].copy()
xy.at[1,3].add(5)
我想得到这个:
2 3
1 {1, 2, 3, 4} {1, 2, 3, 4, 5}
但是xy返回了这个:
2 3
1 {1, 2, 3, 4, 5} {1, 2, 3, 4, 5}
如何保持第2列中的集合不变?
谢谢您可以通过将最后一行更改为
xy.at[1,3] = set(xy.at[1,3]).union(set([5]))
|
运算符连接两个集合:
xy=pd.DataFrame(columns=[2])
xy.at[1,2]={1,2,3,4}
xy[3]=xy[2].copy()
xy.at[1,3]=xy.at[1,3]|{5}
print(xy)
2 3
1 {1, 2, 3, 4} {1, 2, 3, 4, 5}
这里的问题是集合是一个可变对象。使用
xy[2].copy
时,只能对序列进行浅拷贝,因此该拷贝仍将引用同一组
您只剩下两个选项:
- 强制深度复制(不是很简单:
不够)copy.deepcopy
- 永远不要更改集合,而是指定一个新集合:
注意:xy.at[1,3] = xy.at[1,3] | {5}
实际上会改变集合xy.at[1,3]|={5}
-
可以使用:xy.at[1,3]=xy.at[1,3]-{4}
xy.at[1,3] = xy.at[1,3] | {5}