在Python中使用Pandas来处理数据,经常会需要根据给定的条件对数据集进行筛选并赋值的操作。以下是个人作一个简单的操作说明,给有需要的朋友参考。
1、首选引入pandas库
import pandas as pd
2、定义一个简单的列表来作为演示操作。
a=[['js',100,'cz',200],['zj',120,'xs',300],['zj',150,'xs',200],['js',200,'cz',200],['js',110,'wx',180],['js',300,'sz',250],['zj',210,'hz',280]]
3、生成pandas的数据列表,并打印显示
df=pd.DataFrame(a)
print(df)
显示结果如下:
0 1 2 3
0 js 100 cz 200
1 zj 120 xs 300
2 zj 150 xs 200
3 js 200 cz 200
4 js 110 wx 180
5 js 300 sz 250
6 zj 210 hz 280
4、选取数据集中第1列等于'js'的记录,生成的记录赋值给df1
df1=df.loc[df[0]=='js']
print(df1)
显示结果如下:
0 1 2 3
0 js 100 cz 200
3 js 200 cz 200
4 js 110 wx 180
5 js 300 sz 250
5、两个条件同时满足的筛选方式
df1=df.loc[(df[0]=='js') & (df[2]=='cz')]
print(df1)
显示结果如下:
0 1 2 3
0 js 100 cz 200
3 js 200 cz 200
以上为筛选操作,根据实际需要作一些简单的变化就可以满足其他需求,如数据大于某一值,字符中包含什么字符等。
以下是作赋值操作:
1、为了演示,先备份一个pandas数据集。
df1=df.copy()
print(df1)
0 1 2 3
0 js 100 cz 200
1 zj 120 xs 300
2 zj 150 xs 200
3 js 200 cz 200
4 js 110 wx 180
5 js 300 sz 250
6 zj 210 hz 280
2、对满足第1列等于'js'和第3列等于'cz'的记录,把第2列相应的数据修改为288
df1.loc[(df1[0]=='js') & (df1[2]=='cz'),1]=288
print(df1)
显示结果如下:
0 1 2 3
0 js 288 cz 200
1 zj 120 xs 300
2 zj 150 xs 200
3 js 288 cz 200
4 js 110 wx 180
5 js 300 sz 250
6 zj 210 hz 280
3、以上是修改一列数据,以下是修改两列数据,同是修改第2列和第4列。
df1.loc[(df1[0]=='js') & (df1[2]=='cz'),[1,3]]=988
print(df1)
显示结果如下:
0 1 2 3
0 js 988 cz 988
1 zj 120 xs 300
2 zj 150 xs 200
3 js 988 cz 988
4 js 110 wx 180
5 js 300 sz 250
6 zj 210 hz 280
4、对满足条件的不同列,赋以不同的数据。
df1.loc[(df1[0]=='js') & (df1[2]=='cz'),[1,3]]=[588,688]
print(df1)
显示结果如下:
0 1 2 3
0 js 588 cz 688
1 zj 120 xs 300
2 zj 150 xs 200
3 js 588 cz 688
4 js 110 wx 180
5 js 300 sz 250
6 zj 210 hz 280