중복 된 pandas DataFrame을 변경하는 데 문제가 있으며 원래의 DataFrame 인 및에 수정 사항이 적용되지 않습니다.python의 DataFrame.apply pandas가 원본 및 중복 데이터 프레임을 모두 변경합니다.
다음은 예입니다.
In [70]: e = d
In [71]: e['a'] = e['a'].apply(lambda x: x + 1)
: 'A'에 적용하여
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
가 그럼 난 변수 'E'에 'D'dataframe을 할당하고 열을 어떤 임의의 수학을 적용 : 나는 사전의 목록에서 임의의 DataFrame을 만들 말
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
내가 검색 한 B :
문제는 그 적용 기능이 분명히 난 내 인생에 대한 알아낼 수 없습니다 중복 DataFrame 'E'원래 DataFrame 'D'모두에 적용에서 발생 이것이 왜 그렇게 될지는 모르겠지만 아무 소용이없는 이유 때문에 팬더 문서 및 Google과 관련이 있습니다. 나는 여기서 무슨 일이 일어나고 있는지 이해할 수 없다.
요소 별 연산 (예 : e['a'] = [i + 1 for i in e['a']]
)을 사용하여 수학 연산을 시도했지만 문제가 지속됩니다. 팬더 데이터 프레임 유형에 내가 모르는 이상한 점이 있습니까? 누군가가 제공 할 수있는 통찰력에 감사드립니다.
그리고 제가 생각하기에 파이썬에 대해 잘 생각하고있었습니다! 답장을 보내 주셔서 감사합니다. 그것은 큰 도움이됩니다. – MikeGruz
왜 b = a.copy()가 작동하지 않습니까? 주위에 어떤 일이 ... – Merlin
"왜 작동하지 않는가"라는 말이 무슨 뜻인지 이해할 수 없습니다. 그것은 효과가있다. 아마도 변수 이름에 혼란 스러울 것입니까? 원래 질문에서 사용 된 이름이기 때문에'e = d.copy() '라고했습니다. – BrenBarn