๋ฐ˜์‘ํ˜•

 

 

๐Ÿ’ฌ SettingWithCopyWarning:
Pandas์—์„œ ํŠน์ • ์กฐ๊ฑด์œผ๋กœ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๋•Œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ์• ๋งคํ•œ ๊ฒฝ๊ณ !
"์™œ ๋ฐ”๊ฟจ๋Š”๋ฐ ๊ฒฝ๊ณ ๊ฐ€ ๋œจ์ง€?" ์‹ถ์€ ๋ถ„๋“ค์„ ์œ„ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

 


 

โ— ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ์˜ˆ์‹œ

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

 

 

๐Ÿ” ์›์ธ: DataFrame์—์„œ ๋ณต์‚ฌ๋ณธ์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ

df2 = df[df['score'] > 90]
df2['grade'] = 'A'  # โ— ๊ฒฝ๊ณ  ๋ฐœ์ƒ ๊ฐ€๋Šฅ

 

 

→ ์ด ์ฝ”๋“œ๋Š” ์›๋ณธ df๊ฐ€ ์•„๋‹ˆ๋ผ df์˜ ์ผ๋ถ€ ๋ณต์‚ฌ๋ณธ์— ๊ฐ’์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฏ€๋กœ ๊ฒฝ๊ณ ๊ฐ€ ๋œน๋‹ˆ๋‹ค.


 

๐Ÿ› ๏ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

โœ” .loc[]์„ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ

df.loc[df['score'] > 90, 'grade'] = 'A'  # โœ… ์•ˆ์ „ํ•œ ๋ฐฉ์‹

 

โœ” .copy()๋ฅผ ์‚ฌ์šฉํ•ด ์•„์˜ˆ ๋ณต์‚ฌ๋ณธ์ž„์„ ๋ช…์‹œ

df2 = df[df['score'] > 90].copy()
df2['grade'] = 'A'  # โœ… ๋ช…์‹œ๋œ ๋ณต์‚ฌ๋ณธ์—” ๊ฒฝ๊ณ  ์—†์Œ

 

 


โœ… ๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ

  • Pandas๋Š” ์Šฌ๋ผ์ด์‹ฑ ๊ฒฐ๊ณผ๊ฐ€ ๋ณต์‚ฌ๋ณธ์ธ์ง€, ๋ทฐ์ธ์ง€ ์• ๋งคํ•  ์ˆ˜ ์žˆ์–ด ๊ฒฝ๊ณ ๋ฅผ ๋„์›๋‹ˆ๋‹ค.
  • .copy()๋‚˜ .loc[]๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์จ์ฃผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•

+ Recent posts