Xét đoạn mã sau, nơi tôi muốn thay đổi chỉ có 1 tế bào, nhưng toàn bộ hàng được thay đổi:julia dataframe thay đổi một tế bào thay đổi toàn bộ hàng
df=DataFrames.DataFrame(A=[1,2],B=[3,4])
df[2,:A]=7 # this is OK, changes only 1 cell
df[:,1:end]=0.0 # this line somehow makes the change in the next line behave unexpectedly
df[2,:A]=7 # entire 2nd row is 7
Đó là nếu các df[:,1:end]=0.0
bộ tất cả các tế bào của đó hàng đến cùng một tham chiếu; nhưng tôi thiết lập nó để 0.0, vì vậy tôi hy vọng điều này là một bản sao giá trị, không tham khảo sao chép
phiên bản: phiên bản julia 0.4.6-pre DataFrames v "0.7.8"
Nó có thể được dự kiến; nó có vẻ như nó cắt cho tôi. Nếu bạn làm 'df [:,:]' hoặc 'df [1: kết thúc, 1: kết thúc]' thay vào đó, nó hoạt động như dự định. Đoán của tôi là 'df [:, 1: end]' vô tình thay đổi thứ hạng cơ bản, và '= 0.' được hiểu là phát sóng bằng cách nào đó –
Có thể có lệnh" lấp đầy "được sử dụng dưới mui xe để thực hiện phát sóng, gây ra bí danh? –
Xin chào Tasos, có một số cuộc thảo luận về vấn đề này trong [# 1052] (https://github.com/JuliaStats/DataFrames.jl/pull/1052). –