Pandas的apply方法的应用练习

Pandas的apply方法的应用练习_第1张图片

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

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

 2.

data = {'column1':[1, 2, 15, 4, 8]}

df = pd.DataFrame(data)

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

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'当中

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的每一行

# 编写函数将学生成绩相加
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中的字符串列中的所有数字提取出来并拼接成一个新的字符串列。 

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方法
def my_function(row):
        if row['age'] >= 18:
            row['gender'] = '已成年'
    
        return row
    
    # 2.
    data['gender'] = data['gender'].apply(my_function)

你可能感兴趣的:(pandas数据处理,pandas,python,matplotlib)