Pandas: 条件に基づいて列の値を置換する方法


次の基本構文を使用して、条件に基づいて pandas DataFrame の列の値を置き換えることができます。

 #replace values in 'column1' that are greater than 10 with 20
df. loc [df[' column1 '] > 10, ' column1 '] = 20

次の例は、この構文を実際に使用する方法を示しています。

例 1: 条件に基づいて列の値を置換する

次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

次のコードを使用すると、「ポイント」列の 10 を超える各値を値 20 に置き換えることができます。

 #replace any values in 'points' column greater than 10 with 20
df. loc [df[' points '] > 10, ' points '] = 20

#view updated DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 20 6
5 B G 20 5
6 B F 9 9
7 B F 20 5

「ポイント」列の 10 を超える 3 つの値はそれぞれ、値 20 に置き換えられていることに注意してください。

例 2: 複数の条件に基づいて列の値を置換する

次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

次のコードを使用すると、ポイントが 10 未満またはアシストが 5 未満である「position」列の各値を文字列「Bad」に置き換えることができます。

 #replace string in 'position' column with 'bad' if points < 10 or assists < 5
df. loc [(df[' points '] < 10) | (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A Bad 7 8
2 A Bad 7 2
3 A Bad 9 6
4 B G 20 6
5 B G 20 5
6 B Bad 9 9
7 B F 20 5

同様に、次のコードを使用して、ポイントが 10 未満でパスが 5 未満である「位置」列の各値を文字列「Bad」に置き換えることができます。

 #replace string in 'position' column with 'bad' if points < 10 and assists < 5
df. loc [(df[' points '] < 10) & (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A G 7 8
2 A Bad 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5

ポイントが 10 未満アシストが 5 未満の 2 行では、「position」値が文字列「Bad」に置き換えられていることに注意してください。

追加リソース

次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。

Pandas で複数の条件に基づいて行を選択する方法
Pandas で条件に基づいて新しい列を作成する方法
複数の条件で Pandas DataFrame をフィルタリングする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です