如何统计每一行的数据
请问如何统计每一行,大于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的个数
最好有代码,谢谢 晕,刚刚按了半天的空格键,调对齐, 发表出来后表格数据更歪了。。。。。 这些数据有数组存放吗,有的话遍历数组,二维数组更好 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, list(map(float, line.split()))
count = 0
for num in nums:
if num > 1:
count += 1
result = 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 skyhouse 发表于 2023-1-6 17:29
晕,刚刚按了半天的空格键,调对齐, 发表出来后表格数据更歪了。。。。。
可以用表格 傻眼貓咪 发表于 2023-1-6 19:27
运行后出错,帮忙看下。
代码
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, list(map(float, line.split()))
count = 0
for num in nums:
if num > 1:
count += 1
result = 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'
帮忙把统计出来的一列,加到最后列。谢谢 你的 data 不是 string 数据类型,而是 DataFrame 数据类型。
我的方法只适用于 string 类型。 本帖最后由 gywjj 于 2023-1-6 21:21 编辑
只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np.number).gt(1).sum(axis=1) gt(>)
lt (<)
eq(=)
备注一下,可以用在其他地方进行统计。
傻眼貓咪 发表于 2023-1-6 20:46
你的 data 不是 string 数据类型,而是 DataFrame 数据类型。
我的方法只适用于 string 类型。
谢谢你的帮助 gywjj 发表于 2023-1-6 21:19
只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np. ...
谢谢你的帮助 gywjj 发表于 2023-1-6 21:19
只需要把你们代码中读取成data后面的,加下面的代码就可以了
data['大于1个数'] = data.select_dtypes(np. ...
假如要输出同一行,前面几个数的平均数,该怎么写呢? data['均值']=data[['列名1','列名2','列名3',.....]].mean(axis=1)
页:
[1]