问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DataFrame按条件筛选、修改数据:df.loc[]拓展

创作时间:
作者:
@小白创作中心

DataFrame按条件筛选、修改数据:df.loc[]拓展

引用
1
来源
1.
https://www.cnblogs.com/GreatPlanHero/p/18189296

本文主要介绍了Pandas中DataFrame的loc方法的使用,包括按条件筛选数据、修改数据以及处理字符串等高级用法。通过具体的代码示例和详细的解释,帮助读者理解如何使用loc方法进行数据筛选和修改。

创建DataFrame

首先,我们通过字典创建一个学生信息的DataFrame:

import pandas as pd

Student_dict = {'姓名':['张三', '李四', '王五', '赵六'],
                '性别':['男', '女', '男', '女'],
                '年龄':[20, 21, 19, 18],
                'Python成绩':[70, 80, 90, 50],
                '评价':['良好', '良好', '良好', '良好'],
                '地址':['A小区10幢', 'A小区11幢','B小区10幢','C小区11幢']}

df = pd.DataFrame(data=Student_dict, index=['a','b','c','d'])

使用df.loc[]按条件筛选行数据

基本筛选

通过布尔列表的方式筛选数据:

df.loc[[True, True, False, False]]

单条件筛选

筛选Python成绩大于75的学生:

df.loc[df['Python成绩'] > 75]

多条件筛选

筛选Python成绩大于75且年龄大于20的学生:

df.loc[(df['Python成绩'] > 75) & (df['年龄'] > 20)]

注意事项

在使用多个条件时,需要使用括号将条件括起来,且使用&表示"与",|表示"或"。

使用df.loc[]筛选并修改数据

修改单列数据

将Python成绩大于等于90的学生评价修改为"优秀":

df.loc[df['Python成绩'] >= 90, '评价'] = '优秀'

参数说明

  • 参数1:筛选条件
  • 参数2:要修改的列名

字符串筛选

判断某列是否包含特定字符串

筛选地址包含"A小区"的学生:

df.loc[df['地址'].str.contains('A小区')]

判断某列是否包含特定字符串列表

筛选地址包含"A小区"或"B小区"的学生:

xiaoqu_list = ['A小区', 'B小区']
xiaoqu_str = '|'.join(xiaoqu_list)
df[df['地址'].str.contains(xiaoqu_str)]

根据DataFrame多条件修改多列

假设有一个DataFrame,包含借方数量、贷方数量和数量单位:

借方数量
贷方数量
数量单位
100
1000
公斤
0.2
2
300
3000
公斤
0.4
4
500
5000
公斤

需求是将单位为"公斤"的数量转换为"吨":

借方数量
贷方数量
数量单位
0.1
1
0.2
2.0
0.3
3
0.4
4.0
0.5
5

实现代码如下:

def exec_func(df):
    if df['标准单位'].strip() == '公斤':
        return pd.Series([df['借方数量']/1000, df['贷方数量']/1000, '吨'])
    else:
        return pd.Series([df['借方数量'], df['贷方数量'], '吨'])

df[['借方数量', '贷方数量', '标准单位']] = df.apply(exec_func, axis=1)
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号