рдХреЛрдб рдирдореВрдирд╛
# My code
df.loc[0, 'column_name'] = 'foo bar'
рдкрдВрдбреЛрдВ рдореЗрдВ рдпрд╣ рдХреЛрдб 20.3 рдлреЗрдВрдХрддрд╛ рд╣реИ
"рдЗрд╕рдХреЗ рдмрдЬрд╛рдп .loc[row_indexer,col_indexer] = value
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ"ред
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдереЛрдбрд╝рд╛ рдмрдЧ рд╣реИред рдореИрдВ рдЬреНрдпреВрдкрд┐рдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реВрдВред
рдзрдиреНрдпрд╡рд╛рдж! :)
pd.show_versions()
рдХрд╛ рдЖрдЙрдЯрдкреБрдЯрдкреНрд░рддрд┐рдмрджреНрдз: рдХреЛрдИ рдирд╣реАрдВ
рдЕрдЬрдЧрд░: 3.6.1.final.0
рдкрд╛рдпрдерди-рдмрд┐рдЯреНрд╕: 64
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ
OS- рд░рд┐рд▓реАрдЬрд╝: 8.1
рдорд╢реАрди: AMD64
рдкреНрд░реЛрд╕реЗрд╕рд░: Intel64 рдлреИрдорд┐рд▓реА 6 рдореЙрдбрд▓ 61 рд╕реНрдЯреЗрдкрд┐рдВрдЧ 4, рдЬреЗрдиреНрдпреБрдЕрд▓ рдЖрдИрдЯреЗрд▓
рдмрд╛рдЗрдЯрдСрд░реНрдбрд░: рдереЛрдбрд╝рд╛
LC_ALL: рдХреЛрдИ рдирд╣реАрдВ
рд▓реИрдВрдЧ: рдХреЛрдИ рдирд╣реАрдВ
LOCALE: рдХреЛрдИ рдирд╣реАрдВред рдХреЛрдИ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛: 0.20.1
pytest: 3.0.7
рдкрд╛рдЗрдк: 9.0.1
рд╕реЗрдЯрдкреНрдЯреВрд▓: 35.0.2
рд╕рд╛рдЗрдерди: 0.25.2
рд╕реБрдиреНрди: 1.12.1
scipy: 0.19.0
xarray: рдХреЛрдИ рдирд╣реАрдВ
рдЖрдИрдкреАрдереЙрди: 5.3.0
рд╕реНрдлрд┐рдВрдХреНрд╕: 1.5.6
patsy: 0.4.1
рджрд┐рдирд╛рдВрдХ: 2.6.0
pytz: 2017.2
рдмреНрд▓реЙрд╕реНрдХ: рдХреЛрдИ рдирд╣реАрдВ
рдЕрдбрд╝рдЪрди: 1.2.1
рдЯреЗрдмрд▓: 3.2.2
numexpr: 2.6.2
рдкрдВрдЦ: рдХреЛрдИ рдирд╣реАрдВ
matplotlib: 2.0.2
openpyxl: рдХреЛрдИ рдирд╣реАрдВ
xlrd: 1.0.0
xlwt: 1.2.0
xlsxwriter: 0.9.6
lxml: 3.7.3
bs4: 4.6.0
html5lib: 0.999
рд╕реНрдХреНрд╡реИрд▓реНрд╕реАрдореЗ: 1.1.9
pymysql: рдХреЛрдИ рдирд╣реАрдВ
рдорд╛рдирд╕ 2: рдХреЛрдИ рдирд╣реАрдВ
jinja2: 2.9.6
s3fs: рдХреЛрдИ рдирд╣реАрдВ
pandas_gbq: рдХреЛрдИ рдирд╣реАрдВ
pandas_datareader: рдХреЛрдИ рдирд╣реАрдВ
@ NadiaRom рдХреНрдпрд╛ рдЖрдк рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ df
рдПрдХ рдСрдкрд░реЗрд╢рди рд╕реЗ рдЖрдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рджреГрд╢реНрдп рдпрд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
In [8]: df = pd.DataFrame({"A": [1, 2], "B": [3, 4], "C": [4, 5]})
In [9]: df1 = df[['A', 'B']]
In [10]: df1.loc[0, 'A'] = 5
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexing.py:180: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self._setitem_with_indexer(indexer, value)
/Users/taugspurger/Envs/pandas-dev/bin/ipython:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
#!/Users/taugspurger/Envs/pandas-dev/bin/python3.6
рдЗрд╕рд▓рд┐рдП рд╣рдо df1
рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ df
рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд╛рде рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
@TomAugspurger рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдХрднреА рднреА .loc рдХреЗ рдмрд┐рдирд╛ рдкрд╛рдВрдбрд╛ рдХреЛ рдорд╛рди рдирд╣реАрдВ рджреЗрддрд╛
df = pd.read_csv('df_unicities.tsv', sep='\t')
df.replace({'|': '--'}, inplace=True)
df_c = df.loc[df.encountry == country, : ]
df_c['sort'] = (df_c.encities_ua == 'all').astype(int) # new column
df_c['sort'] += (df_c.encities_foreign == 'all').astype(int)
df_c.sort_values(by='sort', inplace=True)
# ---end of chunk, everything is fine ---
if df_c.encities_foreign.str.contains('all').sum() < len(df_c):
df_c.loc[df_c.encities_foreign.str.contains('all'), 'encities_foreign'] = 'other'
df_c.loc[df_c.cities_foreign.str.contains('╨▓╤Б╤Ц'), 'cities_foreign'] = '╤Ц╨╜╤И╤Ц'
else:
df_c.loc[df_c.encities_foreign.str.contains('all'), 'encities_foreign'] = country
df_c.loc[df_c.cities_foreign.str.contains('╨▓╤Б╤Ц'), 'cities_foreign'] = df_c.country.iloc[0]
if df_c.encities_ua.str.contains('all').sum() < len(df_c):
df_c.loc[df_c.encities_ua.str.contains('all'), 'encities_ua'] = 'other'
df_c.loc[df_c.cities_ua.str.contains('╨▓╤Б╤Ц'), 'cities_ua'] = '╤Ц╨╜╤И╤Ц'
else:
df_c.loc[df_c.encities_ua.str.contains('all'), 'encities_ua'] = 'Ukraine'
df_c.loc[df_c.cities_ua.str.contains('╨▓╤Б╤Ц'), 'cities_ua'] = '╨г╨║╤А╨░╤Ч╨╜╨░'
# Warning after it
рддреЗрдЬреА рд╕реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд▓рд╛рдЗрди рдореЗрдВ .loc
рд╕рд╛рде рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рд╕реНрд▓рд╛рдЗрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕ рд╕реНрд▓рд╛рдЗрд╕ рдХреЛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ред
df_c = df.loc[df.encountry == country, :]
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ df_c
рд╕реНрд▓рд╛рдЗрд╕ рдХреЛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрдВрдбреЛрдВ рдХреЛ 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдпрд╣ рд╕рднреА рддрд░рд╣ рд╕реЗ рдореВрд▓ df
рддрдХ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ df_c
рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкрдВрдбреЛрдВ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рд╣реИ (рдФрд░ рд╕реНрд▓рд╛рдЗрд╕ рдирд╣реАрдВ)
df_c = df.loc[df.encountry == country, :].copy()
рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреА рддреНрд░реБрдЯрд┐ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧреАред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдкрд╣рд▓реВ рдореЗрдВ рдкрд╛рдВрдбрд╛ рд╕реЗ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
>>> import pandas as pd
>>> df = pd.DataFrame({'A':[1,2,3,4,5], 'B':list('QQQCC')})
>>> df
A B
0 1 Q
1 2 Q
2 3 Q
3 4 C
4 5 C
>>> df.loc[df['B'] == 'Q', 'new_col'] = 'hello'
>>> df
A B new_col
0 1 Q hello
1 2 Q hello
2 3 Q hello
3 4 C NaN
4 5 C NaN
рддреЛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдп! рдЕрдм рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
>>> df = pd.DataFrame({'A':[1,2,3,4,5], 'B':list('QQQCC')})
>>> df_q = df.loc[df['B'] == 'Q']
>>> df_q
A B
0 1 Q
1 2 Q
2 3 Q
>>> df_q.loc[df['A'] < 3, 'new_col'] = 'hello'
/Users/riddellcd/anaconda/lib/python3.6/site-packages/pandas/core/indexing.py:337: 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
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self.obj[key] = _infer_fill_value(value)
>>> df_q
A B new_col
0 1 Q hello
1 2 Q hello
2 3 Q NaN
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд╛рд░реА! рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЙрдореНрдореАрдж рдХреА рдереА, рдпрд╣ df_q
рдмрджрд▓ рдЧрдпрд╛! рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ df_q
df
рдХрд╛ рдПрдХ рд╕реНрд▓рд╛рдЗрд╕ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ [] df_q
рдкрд╛рдВрдбрд╛ рд╣рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕реЗ df
ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ df_q
рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ df
рд╕реЗ рдЕрд▓рдЧ рд╣реИред
df_q
рд╕реЗ рд╡рд╛рдкрд╕ рд╢реБрд░реВ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ .copy()
рдХрд░реЗрдВред
>>> df_q = df.loc[df['B'] == 'Q'].copy()
>>> df_q
A B
0 1 Q
1 2 Q
2 3 Q
Lets try to reassign our value now!
>>> df_q.loc[df['A'] < 3, 'new_col'] = 'hello'
>>> df_q
A B new_col
0 1 Q hello
1 2 Q hello
2 3 Q NaN
рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╛рдВрдбрд╛ рдХреЛ рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐ df_q
df
рд╕реЗ рдЕрд▓рдЧ рд╣реИ
рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ df_c
рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП df
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ thats рдФрд░ рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗред
@ рдХреНрд░рд┐рд╕рд▓рд░ рдЧреНрд░реЗрдЯ, рдзрдиреНрдпрд╡рд╛рдж !
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЬрдВрдЬреАрд░ .loc
рдиреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХрднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рдП рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, .copy()
рдкрд╛рдВрдбреЛрдВ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЪрдпрдирд┐рдд df_sliced_once
рдХреЛ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреВрд░реНрдг df
рдмрджрд▓рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рд╕рд╣реА рд╣реИ рдЕрдЧрд░ рдореИрдВ smth рдорд┐рд▓рд╛рдпрд╛ред
рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдБ рд╣реИ http://pandas.pydata.org/pandas-docs/stable/indexing.html#returning -рдПрдХ-рд╡реНрдпреВ рдмрдирд╛рдо рдПрдХ рдХреЙрдкреА рдФрд░ @CRiddler рдПрдХ рдЕрдЪреНрдЫрд╛ expl рд╣реИред рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ inplace
рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ
df_c
df
рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЙрддреНрддрд░ рджреЗрдВрдЧреЗред
@ рдХреНрд░рд┐рд╕рд▓рд░ рдзрдиреНрдпрд╡рд╛рдж рдЖрдкрдХрд╛ рдЙрддреНрддрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИ рдЬрдм рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
@ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдореБрдЭреЗ рдорджрдж рдХреЗ рд▓рд┐рдП рдореЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╕реЗ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдЧреЗ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред рдкрд╛рдВрдбрд╛ред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░ рдореЗрдВ рдирд╣реАрдВ рдШрдЯрд╛рдХрд░ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореБрдЦреМрдЯреЗ рдХреЛ рдЪрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ- рдлрд┐рд░ рдорд╛рд╕реНрдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝ рджреЗрдВ рдФрд░ рдореВрд▓ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдорд╛рд╕реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ, рдФрд░ рдХреБрдЫ рдХреЛ рдШреВрдордиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред ред
рдореВрд▓ рдбреЗрдЯрд╛:
>>>import pandas as pd
>>> df = pd.DataFrame({'A':[1,2,3,4,5], 'B':list('QQQCC')})
>>> df
A B
0 1 Q
1 2 Q
2 3 Q
3 4 C
4 5 C
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЕрд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдмрдирд╛рдиреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкреНрд░рд╕рд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ df_q
рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрд╛рдВрдбрд╛ рдЪреЗрддрд╛рд╡рдиреА (рдпрд╣рд╛рдВ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ) рдЙрдард╛рддрд╛ рд╣реИред рдФрд░ df
рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
>>> df_q = df.loc[df["B"] == "Q"]
>>> df_q.loc[df["A"] < 3, "new_column"] = "hello"
# df remains unchanged because we only made changes to `df_q`
>>> df
A B
0 1 Q
1 2 Q
2 3 Q
3 4 C
4 5 C
рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореВрд▓ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдкреНрд░рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреА рд╕реЛрдЪ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрдВ рдФрд░ рдлреБрд▓-рдСрди рд╕рдмрд╕реЗрдЯ рдХреЗ рдмрдЬрд╛рдп рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ рддреЛ рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЙрдкрд╕реЗрдЯ рд╕реЗ рдореВрд▓ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдореЗрдВ "рдкреНрд░рдЪрд╛рд░рд┐рдд" рдмрджрд▓рд╛рд╡ рд╣реЛ, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЬреЛ рднреА рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ рд╡рд╣ рдореВрд▓ рдбреЗрдЯрд╛рдлреНрд░реЗрдо df
ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдорд╛рд╕реНрдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╣рдо df
рдЙрд╕ рд╕рдмрд╕реЗрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
>>> q_mask = df["B"] == "Q"
>>> a_mask = df["A"] < 3
# Combine masks (in this case we used "&") to achieve what a nested subset would look like
# In the same step we add in our item assignment. Instructing pandas to create a new column in `df` and assign
# the value "hello" to the rows in `df` where `q_mask` & `a_mask` overlap.
>>> df.loc[q_mask & a_mask, "new_col"] = "hello"
# Successful "propagation" of new values to the original dataframe
>>> df
A B new_col
0 1 Q hello
1 2 Q hello
2 3 Q NaN
3 4 C NaN
4 5 C NaN
рдЕрдВрдд рдореЗрдВ, рдЕрдЧрд░ рд╣рдо рдХрднреА рднреА рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ df_q рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ рддреЛ рд╣рдо рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ q_mask
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
>>> df.loc[q_mask, :]
A B new_col
0 1 Q hello
1 2 Q hello
2 3 Q NaN
рдЬрдмрдХрд┐ рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдкреНрд░рдЪрд╛рд░" df_q
рд╕реЗ df
рд╣рдо рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╕рд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдХреЗрд╡рд▓ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдХреБрд╢рд▓ рд╣реЛрдЧрд╛ред
@ рдХреНрд░рд┐рд╕рд▓рд░ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд░рд╣реЗ рд╣реИрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд▓рд╛рдЗрди рдореЗрдВ
.loc
рд╕рд╛рде рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рд╕реНрд▓рд╛рдЗрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕ рд╕реНрд▓рд╛рдЗрд╕ рдХреЛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕редрдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ
df_c
рд╕реНрд▓рд╛рдЗрд╕ рдХреЛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрдВрдбреЛрдВ рдХреЛ 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдпрд╣ рд╕рднреА рддрд░рд╣ рд╕реЗ рдореВрд▓df
рддрдХ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░df_c
рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкрдВрдбреЛрдВ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рд╣реИ (рдФрд░ рд╕реНрд▓рд╛рдЗрд╕ рдирд╣реАрдВ)рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреА рддреНрд░реБрдЯрд┐ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧреАред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдкрд╣рд▓реВ рдореЗрдВ рдкрд╛рдВрдбрд╛ рд╕реЗ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдмрдирд╛ рд╣реБрдЖ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг
рддреЛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдп! рдЕрдм рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд╛рд░реА! рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЙрдореНрдореАрдж рдХреА рдереА, рдпрд╣
df_q
рдмрджрд▓ рдЧрдпрд╛! рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐df_q
df
рдХрд╛ рдПрдХ рд╕реНрд▓рд╛рдЗрд╕ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ []df_q
рдкрд╛рдВрдбрд╛ рд╣рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕реЗdf
ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐df_q
рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗdf
рд╕реЗ рдЕрд▓рдЧ рд╣реИредdf_q
рд╕реЗ рд╡рд╛рдкрд╕ рд╢реБрд░реВ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░.copy()
рдХрд░реЗрдВредрдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╛рдВрдбрд╛ рдХреЛ рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐
df_q
df
рд╕реЗ рдЕрд▓рдЧ рд╣реИрдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ
df_c
рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПdf
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ thats рдФрд░ рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗред