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

Python实现pandas DataFrame按多区间条件逐行统计数值数量

实现方案

你现有的思路是可行的,只需要修正条件写法,再补充按行统计计数、拼接date列的逻辑即可。下面给出两种实现方式:

方法1:沿你原有替换逻辑实现

你代码里的小问题:numpy数组不支持链式比较-0.02 <= pct_df.values <= 0.02,需要拆成两个判断条件用&连接。完整代码如下:

import pandas as pd
import numpy as np

# 你原有的df定义
df = pd.DataFrame([{'date': '2021-10-1',
  'pct1': -0.039473959,
  'pct2': -0.039473959,
  'pct3': -0.032095057,
  'pct4': -0.106310578,
  'pct5': -0.039473959},
 {'date': '2021-10-2',
  'pct1': 0.222111128,
  'pct2': 0.042484279,
  'pct3': 0.108269001,
  'pct4': -0.050188884,
  'pct5': 0.042484279},
 {'date': '2021-10-3',
  'pct1': -0.0131719,
  'pct2': 0.051357438,
  'pct3': 0.051357438,
  'pct4': 0.130772264,
  'pct5': 0.051357438},
 {'date': '2021-10-4',
  'pct1': 0.092982799,
  'pct2': 0.092982799,
  'pct3': 0.092982799,
  'pct4': 0.147102302,
  'pct5': 0.092982799}])

pct_df = df.filter(regex='^pct')
# 修正条件写法
conds = [
    pct_df.values > 0.02,
    (pct_df.values >= -0.02) & (pct_df.values <= 0.02),
    pct_df.values < -0.02
]
choices = [1, 0, -1]
# 替换得到映射后的df
map_df = pd.DataFrame(np.select(conds, choices, default=np.NaN),
             index=pct_df.index,
             columns=pct_df.columns)
# 逐行统计各值的数量
res = pd.DataFrame({
    'date': df['date'],
    'decrease': (map_df == -1).sum(axis=1),
    'keep_same': (map_df == 0).sum(axis=1),
    'increase': (map_df == 1).sum(axis=1)
})
print(res)

方法2:更简洁的直接统计方案

不需要提前做值替换,直接对所有pct列按行统计满足条件的数量即可,代码更短性能也更高:

import pandas as pd

# 你的df定义同上
pct_df = df.filter(regex='^pct')
res = pd.DataFrame({
    'date': df['date'],
    'decrease': (pct_df < -0.02).sum(axis=1),
    'keep_same': ((pct_df >= -0.02) & (pct_df <= 0.02)).sum(axis=1),
    'increase': (pct_df > 0.02).sum(axis=1)
})
print(res)

两种方法运行后都会得到你需要的预期输出:

date  decrease  keep_same  increase
0  2021-10-1         5          0         0
1  2021-10-2         1          0         4
2  2021-10-3         0          1         4
3  2021-10-4         0          0         5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:45:03