gpt4 book ai didi

Python:满足条件的列中的求和值

转载 作者:行者123 更新时间:2023-12-05 09:28:20 25 4
gpt4 key购买 nike

我有一个像这样的 DataFrame:

import pandas as pd

df=pd.DataFrame()
df['exchange'] = [1, 1, 1, 2, 3]
df['type'] = ['deposit', 'deposit', 'trade', 'deposit', 'deposit']
df['value'] = [10, 10, '30', '40', '100']

看起来像:

    exchange     type       value
0 1 deposit 10
1 1 deposit 10
2 1 trade 30
3 2 deposit 40
4 3 deposit 100

我想在 "value" 列中添加元素,其中 "type"='deposit' 基于 "exchange"和前向填充得到这样的东西:

    exchange     type       value   balance
0 1 deposit 10 10
1 1 deposit 10 20
2 1 trade 30 20
3 2 deposit 40 40
4 3 deposit 100 100

其中 "balance" 是由 "exchange" 过滤的 deposits 的总和。

有没有办法在没有 for 循环/if 语句的情况下以 python 方式执行此操作?

最佳答案

您可以先按“交换”分组,然后应用np.cumsum,最后分配type为“存款”的结果。

import pandas as pd
import numpy as np

df.loc[df["type"]=="deposit", "balance"] = df.loc[df["type"]=="deposit"].groupby("exchange", sort=False)["value"].apply(np.cumsum)

最后,您可以像您提到的那样用 forward-fill 填充缺失值。

df = df.fillna(method='ffill')

关于Python:满足条件的列中的求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71426929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com