我在更改重复的 pandas DataFrame 时遇到了一些麻烦,并且没有将编辑应用于重复的 DataFrame和原始 DataFrame。
这是一个例子。假设我从字典列表中创建了一个任意 DataFrame:
In [67]: d = [{'a':3, 'b':5}, {'a':1, 'b':1}]
In [68]: d = DataFrame(d)
In [69]: d
Out[69]:
a b
0 3 5
1 1 1
然后我将'd'数据框分配给变量'e'并使用apply将一些任意数学应用于列'a':
In [70]: e = d
In [71]: e['a'] = e['a'].apply(lambda x: x + 1)
问题出现在 apply 函数显然适用于重复的 DataFrame 'e' 和原始 DataFrame 'd' ,我一生都无法弄清楚:
In [72]: e # duplicate DataFrame
Out[72]:
a b
0 4 5
1 2 1
In [73]: d # original DataFrame, notice the alterations to frame 'e' were also applied
Out[73]:
a b
0 4 5
1 2 1
我已经搜索了 pandas 文档和 Google 的原因,但无济于事。我完全不明白这里发生了什么。
我也尝试过使用逐元素运算(例如,e['a'] = [i + 1 for i in e['a']]
)的数学运算,但问题仍然存在。pandas DataFrame 类型中是否有我不知道的怪癖?我很感激有人可能提供的任何见解。