pandas 我有一个条件,不能做if语句来计算单元格条件

s3fp2yjn  于 2023-03-21  发布在  其他
关注(0)|答案(1)|浏览(147)

我试着做这个条件来计算有多少次(单元格)的值小于300秒(5分钟),但是它返回了一个错误,这个条件是关于下面的一个DF,我从我的csv中提取:

df =
    0
0   NaN
1   79.0
2   140.0
3   131.0
4   72.0
... ...
16341   349.0
16342   795.0
16343   787.0
16344   410.0
16345   1221.0

我试着这样说:

for key, value in data_df.items() :
  df = data_df[key].fillna(0, inplace=False).astype(int)   
  if key <= 300 :
   df_count = value.count( value.values() <= 300)
   display(df_count)

但错误消息显示:
类型错误:“numpy.ndarray”对象不可调用
如何求解IF语句以执行Display()代码?

为更好的结果而编辑

我应该问这个之前,但我认为解决方案将是类似的IF声明。
我需要使它在范围内,条件是计数范围内的每个细胞大约5到5分钟,直到我得到1小时完成,所以条件是:

  1. 0至300(5分钟)
  2. 300至600(5至10分钟)
  3. 600至900(10分钟至15分钟)

直到我完成一个小时,我试着:df_count300to600 = data_df[key].fillna(0).le( key > 300 && key< 600 )
这一点我该怎么解决呢?

ix0qys7i

ix0qys7i1#

IIUC,您只需要:

count = df[0].fillna(0).le(300).sum()

输出示例:5

工作原理

df[0].fillna(0).le(300)创建布尔级数,sumTrue计数:

0  df['0'].fillna(0).le(300)
0         NaN                       True
1        79.0                       True
2       140.0                       True
3       131.0                       True
4        72.0                       True
16341   349.0                      False
16342   795.0                      False
16343   787.0                      False
16344   410.0                      False
16345  1221.0                      False

相关问题