首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫数据集:如何知道在dict中引用数据副本还是在dict中引用数据副本?

熊猫数据集:如何知道在dict中引用数据副本还是在dict中引用数据副本?
EN

Stack Overflow用户
提问于 2016-03-24 15:27:19
回答 1查看 355关注 0票数 2

嗨,我遇到了一些有趣的行为,我找不到解释。

我有个叫combinedDict的白痴。它有字符串键,它的元素是熊猫的数据。

我想选择名为“早期”的数据格式。我创建了一个变量等于该数据。然后,我希望通过将字符串'_early‘附加到该列的每一行来编辑该数据文件中的ID列。我使用以下代码执行此操作:

代码语言:javascript
复制
a = combinedDict['early']
a['ID'] = [(s + '_early') for s in a['ID'].tolist()]

当我这样做时,字符串'_early‘被追加到dataframe中列的每一行,但它也被附加到存储在组合式do’every‘中的每一行数据。

另一方面,当我使用以下代码添加.copy()时,只有dataframe会受到影响,而存储在组合式code‘use’中的则不会受到影响。这是我第一次遇到这种行为。这仅仅是熊猫数据的一个特征吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-24 15:33:50

让我们试试这个:

代码语言:javascript
复制
In [87]: df1 = pd.DataFrame({'a': [1,2,3,4,5,6,7,8,9]})

In [88]: df1
Out[88]:
   a
0  1
1  2
2  3
3  4
4  5
5  6
6  7
7  8
8  9

In [89]: df2 = df1

In [90]: id(df1) == id(df2)
Out[90]: True

In [91]: df2.ix[df2.a > 4, 'a'] = 0

In [92]: df1
Out[92]:
   a
0  1
1  2
2  3
3  4
4  0
5  0
6  0
7  0
8  0

所以您的a是对combinedDict['early']的引用

以下是文档的摘录

的可变性与数据的复制 所有的熊猫数据结构都是值可变的(它们包含的值可以改变),但并不总是大小可变的。无法更改Series的长度,但可以将列插入到DataFrame中。然而,绝大多数方法都会产生新的对象,并将输入数据保持不变。不过,总的来说,我们喜欢在明智的地方支持不可变的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36203931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档