你可以使用下面的基本语法来根据一个条件替换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
#create DataFrame
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
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
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的三个值都被替换成了20。
例2:基于多个条件替换列中的值
假设我们有下面这个pandas数据框架:
import pandas as pd
#create DataFrame
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
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
我们可以使用下面的代码来替换'position'列中积分小于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
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的每个值替换为字符串 "坏":
#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
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的两行的 "位置 "值被替换成了字符串 "坏"。
下面的教程解释了如何在pandas中执行其他常见操作:
如何在Pandas中通过多个条件选择行
如何在Pandas中根据一个条件创建一个新的列
如何根据多个条件过滤Pandas数据框
17.7w
阳光是sunny
JavaScript
22.8w
JowayYoung
JavaScript
ECMAScript 6
31.3w
杭州程序员张张
Vue.js
JavaScript