You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas筛选含X列并统计每行含Y值数量问题求助

解决方法及代码修正

错误原因分析

你写的代码有两个核心问题:

  1. 索引语法错误:df.loc[:~df.columns.str.contains('X')]里的~位置不对,正确的列筛选应该是把~作用在布尔数组上,写成df.loc[:, df.columns.str.contains('X')](筛选含X的列),原写法导致索引逻辑混乱,触发DatetimeIndex的切片错误。
  2. 工具用错:np.where是做条件值替换的,不适合统计每行符合条件的单元格数量,这类统计应该用求和操作。

正确实现步骤

  1. 先筛选出列名包含“X”的目标列;
  2. 对目标列的每个单元格,判断是否包含字符串“Y”;
  3. 按行求和,得到每行符合条件的单元格数量,赋值给Result列。

完整代码示例

import pandas as pd

# 示例DataFrame(可替换为你的数据集)
df = pd.DataFrame({
    '日期': pd.date_range('2023-01-01', periods=3),
    'ColX_A': ['Y', 'ABY', 'N'],
    'ColX_B': ['XYZ', 'Y', 'YYY'],
    'ColZ': ['Y', 'N', 'Y']
})

# 1. 筛选列名包含"X"的列
target_cols = df.columns[df.columns.str.contains('X')]

# 2. 统计每行包含"Y"的单元格数量
# str.contains('Y')判断单元格是否含Y,na=False处理空值(视为不含)
# sum(axis=1)按行求和,得到每行符合条件的数量
df['Result'] = df[target_cols].str.contains('Y', na=False).sum(axis=1)

print(df)

输出结果

日期ColX_AColX_BColZResult
2023-01-01YXYZY1
2023-01-02ABYYN2
2023-01-03NYYYY1

内容的提问来源于stack exchange,提问作者geaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:52:11