首页 > 解决方案 > 带有条件的列的 Python Pandas 计算

问题描述

我正在尝试使用 python pandas 对 2 列进行计算。用例是这样的:

我在“hesapKodu1”列中有类似 100,101,102... 的值。对于前 3 个字符,我已将此列拆分为 3 列。“hesapkodu1_1”是“hesapKodu1”的第一个字符,所以它是“1”。“hesapKodu1_2”是“hesapkodu1”的前2个字符,所以它就像“10,11”......

我要做的是:当 hesapKodu1 为 123 或 125 或 130 时,我想计算 BORC 和 ALACAK 列:它就像 BORC - ALACAK。

但对于其他 hesapKodu1 值,它将是 ALACAK - BORC。

最后,所有结果都应该作为回报相加。

现在我的代码是这样的。当 hesapKodu1 以 1 开头时,此代码只能执行 BORC - ALACAK。我找不到遍历上限条件的方法。

source_df['hesapKodu1_1']=source_df['hesapKodu1'].str[:1]
source_df['hesapKodu1_2']=source_df['hesapKodu1'].str[:2]
source_df['hesapKodu1_3']=source_df['hesapKodu1'].str[:3]
hk1 = round(source_df.loc[source_df['hesapKodu1_1'] == '1', 'BORÇ'].sum() - source_df.loc[source_df['hesapKodu1_1'] == '1', 'ALACAK'].sum(),2)
h

标签: pythonpandas

解决方案


你可以利用np.where()which 会比apply().

import numpy as np

source_df["new_column"] = np.where(
    source_df["hesapKodu1"].isin(["123", "125", "130"]),
    source_df["BORC"] - source_df["ALACAK"],
    source_df["ALACAK"] - source_df["BORC"],
)

推荐阅读