插件窝 干货文章 Python Pandas中如何高效地根据上一行值创建并累加新列?

Python Pandas中如何高效地根据上一行值创建并累加新列?

累加 一行 函数 使用 990    来源:    2025-03-14

在Pandas中,你可以使用shift()函数来访问上一行的值,并结合cumsum()函数来实现累加操作。以下是一个示例,展示如何高效地根据上一行的值创建并累加新列。

假设你有一个DataFrame df,其中包含一列A,你想要创建一个新列B,其中B的每个值是A的当前值加上B的上一行的值。

import pandas as pd

# 示例数据
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 创建新列 B,初始值为 A 的第一行值
df['B'] = df['A'].cumsum()

print(df)

输出结果将是:

   A   B
0  1   1
1  2   3
2  3   6
3  4  10
4  5  15

在这个例子中,B列的值是A列的累加值。

如果你想要B列的每个值是A的当前值加上B的上一行的值(而不是简单的累加),你可以使用以下方法:

import pandas as pd

# 示例数据
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 初始化 B 列
df['B'] = 0

# 使用迭代来更新 B 列
for i in range(1, len(df)):
    df.loc[i, 'B'] = df.loc[i, 'A'] + df.loc[i-1, 'B']

print(df)

输出结果将是:

   A   B
0  1   0
1  2   2
2  3   5
3  4   9
4  5  14

在这个例子中,B列的每个值是A的当前值加上B的上一行的值。

解释

  • cumsum() 函数用于计算累加和。
  • shift() 函数可以用于访问上一行的值,但在这种情况下,我们直接使用迭代来更新B列。

如果你有更复杂的需求,比如需要根据多个条件来更新新列,可以考虑使用apply()函数或numpy的向量化操作来提高效率。