鱼C论坛

 找回密码
 立即注册
查看: 3105|回复: 12

[已解决]如何统计每一行的数据

[复制链接]
发表于 2023-1-6 17:28:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问如何统计每一行,大于1的数的个数,然后把每行的统计结果,新增一列来存这个统计的数。

姓名        第一天        第二天        第三天        第四天        第五天        第六天        第七天        第八天
S        1.25                 -4.03             12.33            -4.03          12.33           -4.03            12.33            -4.03
X        0.15            -0.99         9.68                   -0.99         9.68                   -0.99            9.68             -0.99
Y        2.36          -0.99         9.63            3.65         9.63                   -0.99             9.63            -0.99
D        0.15                 -0.99         9.52                 -0.99         9.52                    5.47             9.52             -0.99
R        1.02                 -0.89         8.50                 -0.89         8.50                    -0.89             8.50            -0.89
Y        0.15                 -2.97         7.23                 -2.97         7.23                     -2.97             7.23                     -2.97
V        -1.65         21.82         6.92                 21.82         6.92                     21.82                 6.92          21.82
N        -1.37         -0.74         6.72          -0.74         6.72                    -0.74              6.72              -0.74
J        5.61                 7.83                 6.72                 7.83                 6.72                         7.83          6.72          7.83
T        0.75          -1.26         6.46                 -1.26         6.46                    -1.26               6.46                -1.26
I        0.46                 0.18                 6.41                 0.18                 6.41                     0.18               6.41             0.18
U        -0.28         -2.65         6.10                 -2.65         6.10                     -2.65              6.10               -2.65
Q        -1.62         -0.49         6.09                 -0.49         6.09                     -0.49               6.09                -0.49
W        -1.99         -2.27         5.86                 -2.27         5.86              -2.27              5.86               -2.27

表格拷贝过来,没法很好的对齐,请见谅。

想要在第八天的后面新增一行,统计出每一行大于1的个数

最好有代码,谢谢
最佳答案
2023-1-6 21:19:56
本帖最后由 gywjj 于 2023-1-6 21:21 编辑

只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np.number).gt(1).sum(axis=1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-6 17:29:34 | 显示全部楼层
晕,刚刚按了半天的空格键,调对齐,   发表出来后表格数据更歪了。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-6 17:51:53 | 显示全部楼层
这些数据有数组存放吗,有的话遍历数组,二维数组更好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-6 19:27:46 | 显示全部楼层
data = """S        1.25                 -4.03             12.33            -4.03          12.33           -4.03            12.33            -4.03
X        0.15            -0.99         9.68                   -0.99         9.68                   -0.99            9.68             -0.99
Y        2.36          -0.99         9.63            3.65         9.63                   -0.99             9.63            -0.99
D        0.15                 -0.99         9.52                 -0.99         9.52                    5.47             9.52             -0.99
R        1.02                 -0.89         8.50                 -0.89         8.50                    -0.89             8.50            -0.89
Y        0.15                 -2.97         7.23                 -2.97         7.23                     -2.97             7.23                     -2.97
V        -1.65         21.82         6.92                 21.82         6.92                     21.82                 6.92          21.82
N        -1.37         -0.74         6.72          -0.74         6.72                    -0.74              6.72              -0.74
J        5.61                 7.83                 6.72                 7.83                 6.72                         7.83          6.72          7.83
T        0.75          -1.26         6.46                 -1.26         6.46                    -1.26               6.46                -1.26
I        0.46                 0.18                 6.41                 0.18                 6.41                     0.18               6.41             0.18
U        -0.28         -2.65         6.10                 -2.65         6.10                     -2.65              6.10               -2.65
Q        -1.62         -0.49         6.09                 -0.49         6.09                     -0.49               6.09                -0.49
W        -1.99         -2.27         5.86                 -2.27         5.86              -2.27              5.86               -2.27"""

result = dict()

for line in data.split('\n'):
    name, nums = line[0], list(map(float, line[1:].split()))
    count = 0
    for num in nums:
        if num > 1:
            count += 1
    result[name] = count

for each in result.items():
    print(*each)
S 4
X 3
Y 3
D 4
R 4
V 7
N 3
J 8
T 3
I 3
U 3
Q 3
W 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-6 20:31:32 | 显示全部楼层
skyhouse 发表于 2023-1-6 17:29
晕,刚刚按了半天的空格键,调对齐,   发表出来后表格数据更歪了。。。。。

可以用表格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-6 20:31:47 | 显示全部楼层

运行后出错,帮忙看下。
代码
import pandas as pd
import numpy as np
import shutil
import os
from os import path
import xlwt
import openpyxl

data = pd.read_excel('g:\\data.xlsx')

result = dict()

for line in data.split('\n'):
    name, nums = line[0], list(map(float, line[1:].split()))
    count = 0
    for num in nums:
        if num > 1:
            count += 1
    result[name] = count

for each in result.items():
    print(*each)

出错代码是

Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/pj.py", line 13, in <module>
    for line in data.split('\n'):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\generic.py", line 5902, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'split'

帮忙把统计出来的一列,加到最后列。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-6 20:46:16 | 显示全部楼层
你的 data 不是 string 数据类型,而是 DataFrame 数据类型。
我的方法只适用于 string 类型。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-6 21:19:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 gywjj 于 2023-1-6 21:21 编辑

只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np.number).gt(1).sum(axis=1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-6 21:24:02 | 显示全部楼层
gt(>)
lt (<)
eq(=)
备注一下,可以用在其他地方进行统计。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-7 20:06:36 | 显示全部楼层
傻眼貓咪 发表于 2023-1-6 20:46
你的 data 不是 string 数据类型,而是 DataFrame 数据类型。
我的方法只适用于 string 类型。

谢谢你的帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-7 20:07:11 | 显示全部楼层
gywjj 发表于 2023-1-6 21:19
只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np. ...

谢谢你的帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-7 20:10:32 | 显示全部楼层
gywjj 发表于 2023-1-6 21:19
只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np. ...

假如要输出同一行,前面几个数的平均数,该怎么写呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-10 21:01:58 | 显示全部楼层
data['均值']=data[['列名1','列名2','列名3',.....]].mean(axis=1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 03:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表