如何在Pandas Python中按行或列应用特定操作?

如何在Pandas Python中按行或列应用特定操作?

Pandas是一种用于数据处理和分析的Python库。它包含了许多功能强大的工具,可以用来操作各种不同类型的数据。

在Pandas中,数据通常是存储在称为DataFrame和Series的对象中的。DataFrame对象类似于一个表格,它由行和列组成。每列通常都会包含特定类型的数据,例如数字、字符串或日期。Series对象则类似于一个一维数组,它由一系列的值和对应的标签组成。

有时我们需要对一整列或一整行的数据进行一个特定的操作,例如求平均值、统计最大值、转换数据类型等等。本篇文章将介绍如何在Pandas中按行或列应用特定操作。

按列进行操作

在Pandas中,我们可以通过指定DataFrame对象的列名称来按列进行操作。

应用函数

Pandas中的apply()函数可以用来在整个列中应用一个函数。例如,我们有以下数据:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'income': [40000, 60000, 25000, 80000]}

df = pd.DataFrame(data)

我们想要对每个人的年龄加上10,可以使用以下代码:

def add_ten(x):
    return x + 10

df['age'] = df['age'].apply(add_ten)

print(df)

代码输出:

       name  age  income
0     Alice   35   40000
1       Bob   42   60000
2   Charlie   28   25000
3     David   57   80000

另一种方法是使用lambda表达式:

df['age'] = df['age'].apply(lambda x: x + 10)

应用多个函数

我们可以使用apply()函数来应用多个函数。例如,我们想要计算每个人年龄的平方和立方,可以使用以下代码:

def square(x):
    return x ** 2

def cube(x):
    return x ** 3

df[['age_square', 'age_cube']] = df['age'].apply([square, cube])

print(df)

输出结果:

       name  age  income  age_square  age_cube
0     Alice   35   40000        1225     42875
1       Bob   42   60000        1764     74088
2   Charlie   28   25000         784     21952
3     David   57   80000        3249    185193

过滤数据

我们可以使用apply()函数来筛选数据。例如,我们想要选出那些收入超过50000的人,可以使用以下代码:

def exceeds_50k(x):
    return x > 50000

df = df[df['income'].apply(exceeds_50k)]

print(df)

输出结果:

    name  age  income  age_square  age_cube
1    Bob   42   60000        1764     74088
3  David   57   80000        3249    185193

转换数据类型

我们可以使用apply()函数来转换数据类型。例如,我们想要将收入这一列的数据类型转换为整数,可以使用以下代码:

df['income'] = df['income'].apply(int)

print(df.dtypes)

输出结果:

name          object
age            int64
income         int64
age_square     int64
age_cube       int64
dtype: object

小结

在Pandas中,我们可以通过指定DataFrame对象的列名称来按列进行操作。apply()函数可以用来在整个列中应用一个函数,应用多个函数,过滤数据和转换数据类型等等。

按行进行操作

在Pandas中,我们也可以按行进行操作。可以使用apply()函数和axis参数来指定按行进行操作。

应用函数

我们可以使用apply()函数和axis参数来按行应用一个函数。例如,我们有以下数据:

import pandas as pd
import numpy as np

data = {'A': [1, 2, 3, 4],
        'B': [5, 6, 7, 8],
        'C': [9, 10, 11, 12]}

df = pd.DataFrame(data)

我们想要计算每一行的平均值,可以使用以下代码:

def row_mean(row):
    return np.mean(row)

df['row_mean'] = df.apply(row_mean, axis=1)

print(df)

代码输出:

   A  B   C  row_mean
0  1  5   9  5.000000
1  2  6  10  6.000000
2  3  7  11  7.000000
3  4  8  12  8.000000

也可以使用lambda表达式:

df['row_mean'] = df.apply(lambda row: np.mean(row), axis=1)

应用多个函数

我们可以使用apply()函数和axis参数来按行应用多个函数。例如,我们想要计算每一行的平均值、最大值和最小值,可以使用以下代码:

def row_stats(row):
    return pd.Series([np.mean(row), np.max(row), np.min(row)])

df[['row_mean', 'row_max', 'row_min']] = df.apply(row_stats, axis=1)

print(df)

输出结果:

   A  B   C  row_mean  row_max  row_min
0  1  5   9  5.000000        9        1
1  2  6  10  6.000000       10        2
2  3  7  11  7.000000       11        3
3  4  8  12  8.000000       12        4

过滤数据

我们可以使用apply()函数和axis参数来筛选数据。例如,我们想要选出那些包含奇数的行,可以使用以下代码:

def contains_odd(x):
    return any(xi % 2 != 0 for xi in x)

df = df[df.apply(contains_odd, axis=1)]

print(df)

输出结果:

   A  B   C  row_mean  row_max  row_min
0  1  5   9       5.0        9        1
2  3  7  11       7.0       11        3

转换数据类型

我们可以使用apply()函数和axis参数来转换数据类型。例如,我们想要将每一行的数据类型转换为整数,可以使用以下代码:

df = df.applymap(int)

print(df.dtypes)

输出结果:

A          int64
B          int64
C          int64
row_mean  int64
row_max   int64
row_min   int64
dtype: object

结论

在Pandas中,我们可以按行或列应用特定操作。可以使用apply()函数和axis参数来指定按行或列进行操作。apply()函数可以用来在整个行或列中应用一个函数、应用多个函数、过滤数据和转换数据类型等等。熟练掌握这些操作将帮助我们更加高效地使用Pandas进行数据处理和分析。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程