【发布时间】:2020-04-21 11:32:39
【问题描述】:
我正在尝试在 pandas 中执行与 Excel COUNTIFS 公式等效的操作,其中第一个范围是数据框列,搜索条件是该列中的每个值。第二个搜索范围是不同的列,并且该列中的条件是非空值。
写成 Excel 公式,它看起来像:COUNTIFS(A:A,A2,B:B,"")
这里是一些示例数据:
data = {'ADJL':['BCF-364/BTS-1091/ADJL-4', 'BCF-130/BTS-389/ADJL-1', 'BCF-130/BTS-389/ADJL-1', 'BCF-130/BTS-389/ADJL-1', 'BCF-130/BTS-389/ADJL-1', 'BCF-130/BTS-389/ADJL-1', 'BCF-581/BTS-1742/ADJL-1', 'BCF-581/BTS-1742/ADJL-1'],
'LNCEL':['LNBTS-55/LNCEL-63', '', 'LNBTS-801/LNCEL-62', '', 'LNBTS-801/LNCEL-61', '', '', '']}
df = pd.DataFrame(data)
我需要为此添加两列。第一个是对每个“ADJL”值的计数。我为该专栏找到了这个解决方案:
df['Count_of_ADJL'] = df.groupby('ADJL')['ADJL'].transform('Count_of_ADJL')
我坚持的是下一个,如下面的 Excel 所示。我需要计算 ADJL 中的值在整个 ADJL 列中出现的次数,并且 LNCEL 列不为空。 我删除了许多其他列以简化我的问题,因此我可以添加另一列的解决方案是理想的。
提前非常感谢。
【问题讨论】: