πΌ ΠΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Pandas Ρ ΠΏΠΎΠΌΠΎΡΡΡ where?
ΠΠ΅ΡΠΎΠ΄ replace() Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ pandas ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π΄Π°Π½Π½ΡΡ DataFrame ΠΈΠ»ΠΈ Series Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ.
import pandas as pd
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ DataFrame
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# ΠΠ°ΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΠ»Π±ΡΠ΅ Π, Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 3, Π½Π° 0
df['A'].replace(3, 0, inplace=True)
print(df)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΌΠ΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ pandas where
Π‘ΡΡΠ΄Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ pandas, ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π°ΠΌΠ΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΈΠ»ΠΈ DataFrame Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ. Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ where()
ΠΈΠ· pandas ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ where()?
ΠΠ΅ΡΠΎΠ΄ where()
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ DataFrame Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ DataFrame, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ, Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° NaN (Not a Number), Π»ΠΈΠ±ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ where()
. Π£ Π½Π°Ρ Π΅ΡΡΡ DataFrame df
, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΡΠ»Π°. ΠΡ Ρ
ΠΎΡΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π½Π° Π½ΡΠ»ΠΈ:
import pandas as pd
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ DataFrame
data = {'Numbers': [1, -2, 3, -4, 5]}
df = pd.DataFrame(data)
# ΠΠ°ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π½Π° Π½ΡΠ»ΠΈ
df = df.where(df >= 0, other=0)
print(df)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Numbers
0 1
1 0
2 3
3 0
4 5
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° Π½ΡΠ»ΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Numbers'.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ where() ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ?
ΠΠ΅ΡΠΎΠ΄ where()
ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ &
(Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π) ΠΈ |
(Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠΠ), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ==
(ΡΠ°Π²Π½ΠΎ) ΠΈ !=
(Π½Π΅ ΡΠ°Π²Π½ΠΎ).
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. Π£ Π½Π°Ρ Π΅ΡΡΡ DataFrame Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ: 'Numbers' ΠΈ 'Categories'. ΠΡ Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Numbers', Ρ ΠΊΠΎΡΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Categories' ΡΠ°Π²Π½ΠΎ 'A', Π½Π° 999:
import pandas as pd
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ DataFrame
data = {'Numbers': [1, -2, 3, -4, 5],
'Categories': ['A', 'B', 'A', 'B', 'A']}
df = pd.DataFrame(data)
# ΠΠ°ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Numbers', Ρ ΠΊΠΎΡΠΎΡΡΡ
'Categories' ΡΠ°Π²Π½ΠΎ 'A', Π½Π° 999
df = df.where((df['Numbers'] >= 0) | (df['Categories'] != 'A'), other=999)
print(df)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Numbers Categories
0 1 A
1 999 B
2 3 A
3 999 B
4 5 A
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Numbers', Ρ ΠΊΠΎΡΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Categories' ΡΠ°Π²Π½ΠΎ 'A', Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° 999.
ΠΠ°ΠΌΠ΅Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ DataFrame, ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΎ, Π·Π°ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ Π½Π°Ρ Π΅ΡΡΡ DataFrame Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ 'Numbers'. ΠΡ Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π½Π° ΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°Ρ, Π° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π½Π° ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ:
import pandas as pd
import numpy as np
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ DataFrame
data = {'Numbers': [1, -2, 3, -4, 5]}
df = pd.DataFrame(data)
def replace_func(x):
if x >= 0:
return x**2
else:
return np.abs(x)
# ΠΠ°ΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Numbers' Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ replace_func
df['Numbers'] = df['Numbers'].apply(replace_func)
print(df)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Numbers
0 1
1 4
2 9
3 4
4 25
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°Ρ, Π° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° - Π½Π° ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Numbers'.
ΠΡΠ²ΠΎΠ΄Ρ
ΠΠ΅ΡΠΎΠ΄ where()
ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pandas ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² DataFrame Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΡΡ
ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ where()
, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π² DataFrame Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ.
Π£ΡΠ΅Π±Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»: