前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas的apply方法的应用练习

Pandas的apply方法的应用练习

作者头像
@小森
发布2024-03-15 11:27:02
780
发布2024-03-15 11:27:02
举报
文章被收录于专栏:xiaosenxiaosen

1.使用自定义函数的原因 

  • Pandas虽然提供了大量处理数据的API,但是当提供的API无法满足需求的时候,这时候就需要使用自定义函数来解决相关的问题

 2.

data = {'column1':[1, 2, 15, 4, 8]} df = pd.DataFrame(data)

请创建一个新的列'new_column',其值为'column1'中每个元素的两倍,当原来的元素大于10的时候,将新列里面的值赋0 

代码语言:javascript
复制
import pandas as pd

# 自定义函数
def process_data(x):
    if x > 10:
        return 0
    else:
        return x * 2

# 创建DataFrame数据
data = {'column1':[1, 2, 15, 4, 8]}
df = pd.DataFrame(data)
# 应用自定义函数
df['new_column'] = df['column1'].apply(process_data)

3.请创建一个两列的DataFrame数据,自定义一个lambda函数用来两列之和,并将最终的结果添加到新的列'sum_columns'当中

代码语言:javascript
复制
import pandas as pd  
  
# 创建一个示例 DataFrame  
data = {'column1': [1, 2, 3, 4, 5], 'column2': [10, 20, 30, 40, 50]}  
df = pd.DataFrame(data)  
  
# 定义一个 lambda 函数来计算两列之和  
add_columns = lambda x: x['column1'] + x['column2']  
  
# 应用 lambda 函数到 DataFrame 的新列 'sum_column' 中  
df['sum_columns'] = df.apply(add_columns, axis=1)

4.假设有一个包含学生考试成绩的DataFrame,其中每行代表一个学生,列名为'Name', 'Math Score','English Score, 'Science Score'和'Overall Score',请编写一个函数将每个学生三科成绩相加,并将结果存储在'Overall Score'列中,然后使用apply方法将该函数应用于DataFrame的每一行

代码语言:javascript
复制
# 编写函数将学生成绩相加
def calculate_overall_score(row):
    row['Overall Score'] = row['Math Score'] + row['English Score'] + row['Science Score']
    return row
    
# 使用apply方法将该函数应用于DataFrame的每一行
df.apply(calculate_overall_score, axis=1)

5.

df = pd.DataFrame({'col1': ['12a3', '4b5c', '6de'], 'col2': ['a1b2', 'c3d4', 'e5f6']})

使用apply方法,自定义一个函数,将DataFrame中的字符串列中的所有数字提取出来并拼接成一个新的字符串列。 

代码语言:javascript
复制
import pandas as pd
def extract_numbers(s):  
    return ''.join([str(int(i)) for i in s if i.isdigit()])  
    
df = pd.DataFrame({'col1': ['12a3', '4b5c', '6de'], 'col2': ['a1b2', 'c3d4', 'e5f6']}) 
df['col3'] = df['col1'].apply(extract_numbers)
print(df['col3'])

6. 

假设有一个名为data的DataFrame,其中包含以下列:

  • name:字符串类型,表示姓名
  • age:整数类型,表示年龄
  • gender:字符串类型,表示性别
  • score:浮点数类型,表示分数

请自定义一个函数my_function,它接受DataFrame的一行作为参数,并根据某些条件修改该行的值

  1. 将年龄大于等于18的人的性别修改为”已成年“;
  2. 在Seris中使用apply方法
代码语言:javascript
复制
def my_function(row):
        if row['age'] >= 18:
            row['gender'] = '已成年'
    
        return row
    
    # 2.
    data['gender'] = data['gender'].apply(my_function)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档