2016-03-17 23 views
5

Đầu tiên tôi xây dựng khung DataFrame mới. Sau đó tạo một frame2 mới bằng cách lọc một số dữ liệu từ khung. Bây giờ tôi muốn gán một số giá trị để Frame2:gấu trúc SettingWithCopyCảnh báo sau khi thử .loc

import numpy as np 
from pandas import DataFrame 

frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California']) 
mask = frame['Texas'] > 1 
print frame[mask] 
frame2 = frame.loc[mask] 
frame2.loc['c', 'Ohio'] = 'me' 
print frame2 

nhưng tôi đã nhận cảnh báo này:

C:\Python27\lib\site-packages\pandas\core\indexing.py:461: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead 

tại sao tôi tiếp tục nhận được cảnh báo này mặc dù tôi đã sử dụng cú pháp .loc được đề nghị? tôi phải làm gì để tránh cảnh báo này?

+0

có vẻ như tôi đã tìm thấy một giải pháp có thể có tại: http://stackoverflow.com/questions/23688307/settingwithcopywarning-even-when-using-loc. ai đó có ý tưởng tốt khác? – Osora

+0

Ý định của bạn ở đây là gì? bạn có muốn cập nhật một bản sao hoặc bản gốc df – EdChum

+0

@EdChum tôi muốn cập nhật bản sao không. – Osora

Trả lời

4

Thay đổi

frame2 = frame.loc[mask] 

để

frame2 = frame.loc[mask].copy() 

loại bỏ cảnh báo này.

+0

Tuyệt vời! Điều đó hoạt động! Cảm ơn bạn ~! O (∩_∩) O – Osora

+0

Bạn được chào đón. Chúc may mắn! –

Các vấn đề liên quan