python - पांड्स सेटिंगविथकॉपी चेतावनी




pandas warnings (2)

पॉल के बारे में 'लोक' उपयोग के बारे में सहमत

आपके लागू होने के मामले में आप ऐसा करने में सक्षम होंगे:

cols = ['col1', 'col2', 'col3']
df.loc[:, cols] = df[cols].applymap(some_function)

इस सवाल का पहले से ही उत्तर दिया गया है:

पायथन 3.4 और पांडा 0.15.0

डीएफ एक डाटाफ्रेम है और कॉल 1 एक कॉलम है। नीचे दिए गए कोड के साथ, मैं 10 की उपस्थिति की जाँच कर रहा हूं और 1000 के साथ ऐसे मानों की जगह लेता हूं।

df.col1[df.col1 == 10] = 1000

यहाँ एक और उदाहरण है इस बार, मैं सूचकांक पर आधारित कॉल 2 में मान बदल रहा हूं।

df.col2[df.index == 151] = 500

ये दोनों नीचे चेतावनी का उत्पादन करते हैं:

-c:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

आखिरकार,

cols = ['col1', 'col2', 'col3']
df[cols] = df[cols].applymap(some_function)

इससे एक ऐसी चेतावनी उत्पन्न होती है, जिसमें एक जोड़ा सुझाव दिया गया है:

Try using .loc[row_indexer,col_indexer] = value instead

मुझे यकीन नहीं है कि मैं समझता हूं कि चर्चा को चेतावनियों में बताया गया है। इन तीन लाइनों को लिखने का एक बेहतर तरीका क्या होगा?

ध्यान दें कि ऑपरेशन ने काम किया


यहां मुद्दा यह है कि: df.col1[df.col1 == 10] प्रति एक प्रति देता है

तो मैं कहूंगा:

row_index = df.col1 == 10
# then with the form .loc[row_indexer,col_indexer]
df.loc[row_index, 'col1'] = 100




chained-assignment