Pandas 对DataFrame中的每个单元格应用函数

Pandas 对DataFrame中的每个单元格应用函数

在本文中,我们将介绍Pandas中DataFrame中的apply方法和applymap方法。这些方法可以让我们对DataFrame中的每个单元格(cell)应用函数,并将结果返回到DataFrame中。使用这些方法可以极大地简化数据清洗和数据处理的过程。

阅读更多:Pandas 教程

Pandas DataFrame的apply方法

Pandas DataFrame的apply方法可以让我们对DataFrame中的每列或者每行应用一个函数。apply方法接收一个函数作为参数,并返回一个新的DataFrame,其中应用了该函数。

假设我们有以下DataFrame:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
})
Python

现在我们想要对DataFrame中的每个单元格应用一个函数,该函数将该单元格的值加上1。我们可以定义一个函数:

def add_one(x):
    return x + 1
Python

然后使用apply方法将该函数应用到DataFrame中的每个单元格:

new_df = df.apply(add_one)

print(new_df)
Python

输出结果为:

   A  B   C
0  2  5   8
1  3  6   9
2  4  7  10
Python

可以看到,apply方法将add_one函数应用到了DataFrame中的每个单元格,并将结果返回到了一个新的DataFrame中。在这个例子中,我们对每个单元格应用的函数是非常简单的,但是apply方法同样适用于更复杂的函数。

我们也可以使用apply方法对每行(或每列)应用一个函数。只需要指定axis参数的值为1(或0)即可。例如,对每行应用一个函数:

def sum_row(row):
    return row.sum()

row_sums = df.apply(sum_row, axis=1)

print(row_sums)
Python

输出结果为:

0     12
1     15
2     18
dtype: int64
Python

也可以对每列应用一个函数:

def sum_column(col):
    return col.sum()

column_sums = df.apply(sum_column, axis=0)

print(column_sums)
Python

输出结果为:

A     6
B    15
C    24
dtype: int64
Python

Pandas DataFrame的applymap方法

applymap方法可以让我们对DataFrame中的每个单元格应用一个函数。与apply方法不同,applymap方法不会区分每列或者每行,而是对DataFrame中的每个单元格应用相同的函数。applymap方法接收一个函数作为参数,并返回一个新的DataFrame,其中应用了该函数。

我们可以使用上面的例子,对DataFrame中的每个单元格应用一个函数,该函数将该单元格的值乘以2:

def multiply_two(x):
    return x * 2

new_df = df.applymap(multiply_two)

print(new_df)
Python

输出结果为:

   A   B   C
0  2   8  14
1  4  10  16
2  6  12  18
Python

可以看到,applymap方法将multiply_two函数应用到了DataFrame中的每个单元格,并将结果返回到了一个新的DataFrame中。

总结

在本文中,我们介绍了Pandas中DataFrame的apply方法和applymap方法。这些方法可以让我们对DataFrame中的每个单元格应用函数,并将结果返回到DataFrame中。使用这些方法可以极大地简化数据清洗和数据处理的过程。在应用函数之前,我们需要定义好要应用的函数,根据具体情况选择合适的apply方法或applymap方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程