Pandas:如何根据条件替换列中的值


您可以使用以下基本语法根据条件替换 pandas DataFrame 列中的值:

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

以下示例展示了如何在实践中使用此语法。

示例1:根据条件替换列中的值

假设我们有以下 pandas DataFrame:

 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       

我们可以使用以下代码将“points”列中大于 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

请注意,“points”列中大于 10 的三个值均已替换为值 20。

示例2:根据多个条件替换列中的值

假设我们有以下 pandas DataFrame:

 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 的每个值替换为字符串“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 的两行的“位置”值替换为字符串“Bad”。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas 中根据多个条件选择行
如何根据 Pandas 中的条件创建新列
如何根据多个条件过滤 Pandas DataFrame

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注