本文将介绍如何使用python的科学计算库pandas对dataframe的特定列或行进行运算,适用于windows 7系统,使用anaconda3-4.3.0.1和pycharm-community-2016.3.2编辑器,以及pandas版本0.19.2。
场景描述

假设我们有一个名为df_1的DataFrame,其列索引为["value1", "value2", "value3", "value4"],行索引为0到7。我们需要执行以下操作:
列操作:
立即学习“Python免费学习笔记(深入)”;
- 对"value1"和"value2"列的每个数进行平方。
- 对"value1"和"value2"列的每个数加2。
行操作:
- 对1和2行的每个数进行平方。
- 对1和2行的每个数减3。
df_1的初始状态如下:

操作后的结果如下:
列操作:
立即学习“Python免费学习笔记(深入)”;

行操作:

代码

以下是实现上述操作的Python代码:
import pandas as pd import numpy as npdict_1 = {"value1": [10, 20, 30, 40, 50, 60, 70, 80], "value2": [100, 200, 300, 400, 500, 600, 700, 800], "value3": [50, 20, 30, 90, 50, 60, 80, 80], "value4": [10, 30, 90, 40, 60, 60, 70, 80]}
df_1 = pd.DataFrame(dict_1, columns=["value1", "value2", "value3", "value4"]) print("\n", "df_1", "\n", df_1, "\n") print(type(df_1))
对某些列进行计算
df_2 = df_1.apply(lambda x: np.square(x) if x.name in ['value1', 'value2'] else x) print("\n", "df_2-列平方", "\n", df_2, "\n")
df_2 = df_1.apply(lambda x: x+2 if x.name in ['value1', 'value2'] else x) print("\n", "df_2-列+2", "\n", df_2, "\n")
对某些行进行计算
df_3 = df_1.apply(lambda x: np.square(x) if x.name in [1, 2] else x, axis=1) print("\n", "df_3-行平方", "\n", df_3, "\n")
df_3 = df_1.apply(lambda x: x-3 if x.name in [1, 2] else x, axis=1) print("\n", "df_3-行-3", "\n", df_3, "\n")
代码截图:

部分代码解读

列操作和行操作的区别在于
axis参数的使用。默认情况下,
axis=0表示对列进行操作,而
axis=1表示对行进行操作。
例如,
df_2 = df_1.apply(lambda x: np.square(x) if x.name in ['value1', 'value2'] else x)使用了
apply方法和
lambda函数。这行代码的作用是对列名为
['value1', 'value2']的每个元素进行平方运算,其余列保持不变。
apply函数可以看作是内置的循环操作,简化了代码的书写,无需手动编写循环。










