python - 带有条件的列的 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
解决方案
你可以利用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"],
)
推荐阅读
- node.js - 直到我在 Visual Studio Code 中点击开始调试,一切都很好
- jenkins-pipeline - Docker in Docker - Jenkins Docker Pipeline - 如何连接到外部服务
- python - opencv 在使用 Kivy 和 Buildozer 创建 Android 应用程序时出现问题:/site-packages/cv2/cv2.so" 是 64 位而不是 32 位,targetsdk:27
- email - 如何在 Roundcube 上启用密码插件
- c# - 传递给 ViewDataDictionary 的模型项是“*”类型的,但是这个 ViewDataDictionary 实例需要一个“..IEnumerable[*]”类型的模型项
- google-cloud-platform - Google APIs Service Agent 服务帐号被误删
- typescript - 如何为返回新函数的函数设置正确的返回类型,最后一个参数是可选的
- c# - 使用 Azure AD 注销 SAML
- java - UIMA RUTA - 如何以特定顺序处理单词?
- python - 如何根据 cognito 的创建日期/更新日期获取用户列表