📜  pandas 在条件下增加值 - Python (1)

📅  最后修改于: 2023-12-03 15:03:29.496000             🧑  作者: Mango

Pandas 在条件下增加值 - Python

在数据分析中,经常需要对 DataFrame 中的某些行或列进行特殊处理,如给符合某个条件的行增加一个特定的数值。Pandas 提供了一些方法可以帮助实现这样的需求。

使用 loc 和条件语句

DataFrame 的 loc 方法可以通过索引或布尔数组定位行列,结合条件语句可以实现对满足条件的行或列增加值的操作。例如,对于以下的 DataFrame:

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'score': [80, 90, 85, 95]
})

可以使用以下语句对得分在 90 分以上的同学增加 10 分:

df.loc[df['score'] > 90, 'score'] += 10

这个语句的意思是:在 DataFrame df 中,如果 score 列的值大于 90,那么将对应行的 score 值增加 10。

使用 apply 和函数

另一个常见的做法是使用 apply 方法和自定义函数。假设我们想对所有同学增加 score 的 10%,则可以定义一个函数:

def add_bonus(row):
    row['score'] *= 1.1
    return row

然后通过 apply 方法调用这个函数:

df = df.apply(add_bonus, axis=1)

这个语句的意思是:对 DataFrame df 的每一行,都调用一次 add_bonus 函数,返回处理后的 Series,并将整个 DataFrame 更新为处理后的结果。

使用 where 和条件语句

除了 loc 方法以外,Pandas 还提供了 where 方法,可以用更简单的方式实现条件增加值的操作。例如,对于同样的 DataFrame,我们可以使用以下语句对得分在 90 分以上的同学增加 10 分:

df['score'] = df['score'].where(df['score'] <= 90, df['score'] + 10)

这个语句的意思是:如果 score 列的值小于等于 90,那么将 score 列的值保持不变;否则将 score 列的值加上 10。

总的来说,根据具体的场景和需要,选择不同的方法可以更方便地实现条件增加值的操作。