python - Python Pandas 中的 Excel IF 和 COUNTIF
问题描述
我有一个 Excel 表,其中单元格 G2 有以下论坛:
=IF(COUNTIF($C2:$F2,G$1)>0,$Z2/$B2,0)
我有这个公式水平直到单元格 Y2,所以 Y2 有
=IF(COUNTIF($C2:$F2,Y$1)>0,$Z2/$B2,0)
同样,我有这个公式垂直直到单元格 G223,所以 G223 有
=IF(COUNTIF($C223:$F223,G$1)>0,$Z223/$B223,0)
基本上,这将是一个相似矩阵。
我想在 Pandas 数据框中执行相同的操作。我怎样才能做到这一点?
解决方案
逻辑上完全一样。不知道将 Excel 类型逻辑复制到的基本原理pandas
import numpy as np
df = pd.DataFrame({"A":["","London","Singapore","London","KL","New York"],"B":["London","","","","",""],"C":["","","","","",""],"D":[25,10,"","","",""],"E":["","","","","",""],"F":["","","","","",""],"G":["","","","","",""]})
print(f"""{df.to_string()}
np.where((df.loc[1:5,'A']==df.loc[0,'B']).sum()>0,(df.loc[0,"D"]/df.loc[1,"D"]),0)
{np.where((df.loc[1:5,'A']==df.loc[0,'B']).sum()>0,(df.loc[0,"D"]/df.loc[1,"D"]),0)}
np.where((df.loc[1:5,'A']==df.loc[0,'C']).sum()>0,(df.loc[0,"D"]/df.loc[1,"D"]),0)
{np.where((df.loc[1:5,'A']==df.loc[0,'C']).sum()>0,(df.loc[0,"D"]/df.loc[1,"D"]),0)}
""")
输出
A B C D E F G
0 London 25
1 London 10
2 Singapore
3 London
4 KL
5 New York
np.where((df.loc[1:5,'A']==df.loc[0,'B']).sum()>0,(df.loc[0,"D"]/df.loc[1,"D"]),0)
2.5
np.where((df.loc[1:5,'A']==df.loc[0,'C']).sum()>0,(df.loc[0,"D"]/df.loc[1,"D"]),0)
0.0
推荐阅读
- r - 根据一列中的条件在另一列中设置条件
- javascript - 如何在点击时在javascript中重新激活?
- c# - 将事件转变为命令问题
- bash - 获取 FUNCNAME 中的参数数量
- linux - 在 Azure 中重置/重新配置虚拟机的操作系统?
- swiftui - VStack/HStack 中的 SwiftUI 重复边框
- javascript - Graph Chart.js 下拉菜单 - 图表渲染
- ios - 热重启不再工作,根本无法调试应用程序
- python - 如何在记录插值来自哪一年的同时转发填充缺失的数据?
- android - 当 AppStore 中有新版本时如何更新基于 Cordova 的应用程序?