楼主: xlbdh2
1497 10

统计每行>3的数值出现次数 [推广有奖]

  • 3关注
  • 0粉丝

硕士生

15%

还不是VIP/贵宾

-

威望
0
论坛币
36 个
通用积分
3.4118
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1552 点
帖子
91
精华
0
在线时间
73 小时
注册时间
2007-12-15
最后登录
2022-8-7

楼主
xlbdh2 发表于 2021-8-15 23:58:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
1111.png

series里面的1~50行,按行,统计be28~be13里面,每行>3的数值出现次数,用python实现。
谢谢各位高手,高手,高高手。
上传了附件!免费!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python Series Serie seri 高高手

沙发
xlbdh2 发表于 2021-8-16 10:20:01
各位高手,修改一下:统计每行>=1或者<=-1的数值出现次数。不好意思!

藤椅
shuxia 发表于 2021-8-16 14:10:57
df = pd.read_excel('样本.xlsx')
var_list = [var for var in df.columns if var.find('be')>-1]
df['flag'] = df[var_list].apply(lambda x: np.sum([t>=1 for t in x]),axis=1)

板凳
xlbdh2 发表于 2021-8-29 10:58:50
shuxia 发表于 2021-8-16 14:10
df = pd.read_excel('样本.xlsx')
var_list = [var for var in df.columns if var.find('be')>-1]
df['f ...
大哥,您确定columns是统计每行>-1,怎么数目不对?

报纸
shuxia 发表于 2021-8-30 08:36:44
统计的是>=1的值的个数,不是>-1的

地板
xlbdh2 发表于 2021-8-30 17:54:23
shuxia 发表于 2021-8-30 08:36
统计的是>=1的值的个数,不是>-1的
这个代码没有搞懂 .apply(lambda x: np.sum([t>=1 for t in x]),axis=1)
1.sum不是只能求总和么?怎么弄t>=1进去
2.t>=1就算了,为何后面跟for
3.var_list与后面x啥关系
谢谢高手!

7
shuxia 发表于 2021-8-31 08:38:02
var_list是以be开头的列字段列表
t>=1的返回值是布尔值,要么是0,要么是1,求和就相当于查找>=1的值的个数
x 就是var_list对应的取值

8
xlbdh2 发表于 2021-9-1 00:27:24
shuxia 发表于 2021-8-31 08:38
var_list是以be开头的列字段列表
t>=1的返回值是布尔值,要么是0,要么是1,求和就相当于查找>=1的值的个 ...
代码我改了几个地方:
import pandas as pd
import numpy as np
df = pd.read_excel('D:\样本.xlsx')
var_list = [dd for dd in df.columns if dd.find('be')>-1000]
print(var_list)
df['flag'] = df[var_list].apply(lambda x: np.sum([t<0 for t in x]),axis=1)
print(df)
df.dtypes

find('be')>-1000 把1改成1000
.sum([t<0 for t in x]),axis=1) 把》=1改成<0

相当于统计所有字段(含be开头)的每行,<0发生个数之和?

您看对么?

9
xlbdh2 发表于 2021-9-1 00:34:22
shuxia 发表于 2021-8-31 08:38
var_list是以be开头的列字段列表
t>=1的返回值是布尔值,要么是0,要么是1,求和就相当于查找>=1的值的个 ...
您看我这样理解对不对?

np.sum([t<0 for t in x]),axis=1)
sum的确是统计每个含矩阵变量值之和
sum也可统计<0之类的发生次数之和
但sum要统计变量t后面可以加个for,启动自动调入t包含每个字段,先看该字段<0不,把所有<0的次数求和。

if dd.find('be')>-1000
if是限制columns的条件,
find是限定只计算变量dd里的字段be
变量dd.find>-1000就是统计所有字段,如果>-1只计算含be的字段值

10
shuxia 发表于 2021-9-1 14:32:44
dd.find('be')是查找字符串dd中是否有be,如果有返回的是大于-1的值,否则返回-1

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-28 15:49