python - पांडा सेटिंग के साथ कार्रवाई



pandas dataframe (1)

मैं कुछ कॉलम को delete और कुछ मान को कॉलम में बदलने की कोशिश करता हूं

df2.drop(df2.columns[[0, 1, 3]], axis=1, inplace=True)
df2['date'] = df2['date'].map(lambda x: str(x)[1:])
df2['date'] = df2['date'].str.replace(':', ' ', 1)
df2['date'] = pd.to_datetime(df2['date'])

और यह सब मुझे मिलता है

  df2.drop(df2.columns[[0, 1, 3]], axis=1, inplace=True)
C:/Users/����� �����������/Desktop/projects/youtube_log/filter.py:11: 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

वहाँ क्या समस्या है?


आपका df2 एक अन्य df2 का एक टुकड़ा है। आपको drop करने के अपने प्रयास से पहले इसे df2 = df2.copy() साथ स्पष्ट रूप से कॉपी करना होगा

निम्नलिखित डेटाफ़्रेम पर विचार करें:

import pandas as pd
import numpy as np


df1 = pd.DataFrame(np.arange(20).reshape(4, 5), list('abcd'), list('ABCDE'))

df1

मुझे df1 से df2 का एक टुकड़ा असाइन करें

df2 = df1[['A', 'C']]

df2 अब df2 का एक टुकड़ा है और अगर हम df2 में चीजों को बदलने की कोशिश करते हैं, तो उन pesky SettingWithCopyWarning को ट्रिगर करना चाहिए। चलो एक नज़र डालते हैं।

df2.drop('c')

कोई समस्या नहीं। कैसा रहेगा:

df2.drop('c', inplace=True)

वो रहा:

समस्या यह है कि पांडा कुशल होने की कोशिश करता है और ट्रैक करता है कि df2 के समान डेटा की ओर इशारा कर रहा है। यह उस रिश्ते को संरक्षित कर रहा है। चेतावनी आपको बता रही है कि आपको स्लाइस के माध्यम से मूल डेटाफ़्रेम के साथ गड़बड़ करने की कोशिश नहीं करनी चाहिए।

ध्यान दें कि जब हम df2 को df2 , तो पंक्ति 'c' को हटा दिया जाता है।

df2

और df1 देखते df1 हम देखते हैं कि पंक्ति 'ग' अभी भी है।

df1

पांडा ने df2 की एक प्रति df2 फिर पंक्ति 'ग' को गिरा दिया। यह संभावित रूप से असंगत है कि हमारा इरादा क्या विचार कर रहा है हमने df2 एक स्लाइस बनाया है और उसी डेटा को df1 रूप में df1 । इसलिए पांडा हमें चेतावनी दे रहे हैं।

चेतावनी को न देखने के लिए, प्रतिलिपि स्वयं बनाएं।

df2 = df2.copy()
# or
df2 = df1[['A', 'C']].copy()




chained-assignment