怎么求出部分列里最近200行和值不为0的最小值并返回对应的列名

计算m10到m500最近200行和值
img

img

img

要求是不为0的最小值返回输出列名
麻烦解决下

题主的问题描述不够清晰,可能想表达的意思是连续200行中一旦出现某列和值为0时,找出这些列的和值,并打印出和值为0的那一列名。
如果是这样问题的话,下面写一段代码基本能实现这个需求::

import pandas as pd 
df=pd.read_csv('cs.csv')
df=df.iloc[:,7:]
print(df.head())
for i in range(len(df)-200):
    df1=df.iloc[i:200+i,:]
    sums=df1.apply(sum,axis=0)
    if any(sums==0):
        print(sums)
        ind=sums[sums.values==0].index.tolist()
        if len(ind)==1:
            print(ind[0])
        else:
            print(ind)        

根据题主要求,补充代码如下,供参考:

import pandas as pd 
df=pd.read_csv('cs.csv')
df1=df.iloc[-200:,7:]
v=min([x for x in df1.apply(sum,axis=0) if x!=0])
for ind in df1.columns:
    if df1[ind].sum()==v:
        print(ind)
#output:m180

如对你有帮助,可点击本回答的右上方采纳按钮给予采纳。

转为numpy类型,用numpy对象的方法
或者转化为dataframe类型

数据下载链接: 百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间 https://pan.baidu.com/s/1EZZyMYangOYSfc_04WFYdg
提取码:6225
--来自百度网盘超级会员V4的分享

提主没说明白下面两点问题:

  1. 最近200行是指哪200行?
  2. 对这200行怎么求和, 是每一列的200个数求和吗?
    说明白这两点, 就可以提供解答
# 
df1 = df.iloc[:200].loc[:,'m10':'m500'].sum()
df1[df1 != 0].idxmin(axis=1)