У меня возникли проблемы с изменением дублированного кадра данных pandas, и изменения не применяются как к дубликату , так и к исходному кадру данных .
Вот пример. Скажем, я создаю произвольный 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» и применяю некоторую произвольную математику к столбцу «a», используя apply:
In [70]: e = d
In [71]: e['a'] = e['a'].apply(lambda x: x + 1)
Проблема возникает в том, что Функция применения, по-видимому, применяется как к дубликату 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, о которой я не знаю? Я ценю любое понимание, которое кто-то может предложить.