📅  最后修改于: 2023-12-03 15:03:29.496000             🧑  作者: Mango
在数据分析中,经常需要对 DataFrame 中的某些行或列进行特殊处理,如给符合某个条件的行增加一个特定的数值。Pandas 提供了一些方法可以帮助实现这样的需求。
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
方法和自定义函数。假设我们想对所有同学增加 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 更新为处理后的结果。
除了 loc
方法以外,Pandas 还提供了 where
方法,可以用更简单的方式实现条件增加值的操作。例如,对于同样的 DataFrame,我们可以使用以下语句对得分在 90 分以上的同学增加 10 分:
df['score'] = df['score'].where(df['score'] <= 90, df['score'] + 10)
这个语句的意思是:如果 score
列的值小于等于 90,那么将 score
列的值保持不变;否则将 score
列的值加上 10。
总的来说,根据具体的场景和需要,选择不同的方法可以更方便地实现条件增加值的操作。