pandas将df赋值到另一个df_Pandas条件筛选并赋值实用操作一例

在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

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值