首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >apply()并计算所有dataframe行第一行的比例

apply()并计算所有dataframe行第一行的比例
EN

Stack Overflow用户
提问于 2011-04-06 02:18:42
回答 4查看 2.2K关注 0票数 2

我有一个数据框,如下所示,列出了按车辆类型划分的受伤人数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
trqldnum <- data.frame(motorveh=c(796,912,908,880,941,966,989,984),
                       motorcyc=c(257,295,326,313,403,389,474,496),
                       bicyc=c(109,127,125,137,172,146,173,178))
trqldnum

#  motorveh motorcyc bicyc
#1      796      257   109
#2      912      295   127
#3      908      326   125
#4      880      313   137
#5      941      403   172
#6      966      389   146
#7      989      474   173
#8      984      496   178

目前,我正在计算每个车辆类型的第一行的比例,使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
trqldprop <- t(apply(trqldnum,1,function(x) {
                 x/c(trqldnum[1,1],trqldnum[1,2],trqldnum[1,3])
              }))
trqldprop

#  motorveh motorcyc    bicyc
#1 1.000000 1.000000 1.000000
#2 1.145729 1.147860 1.165138
#3 1.140704 1.268482 1.146789
#4 1.105528 1.217899 1.256881
#5 1.182161 1.568093 1.577982
#6 1.213568 1.513619 1.339450
#7 1.242462 1.844358 1.587156
#8 1.236181 1.929961 1.633028

这看起来有点丑陋,如果数据改变了形状,我需要手动更改函数的分母。如果我尝试在apply()语句中仅使用以下内容,我最终会得到一个列表列表中的输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function(x) x/c(trqldnum[1,])

我更喜欢以上面的数据帧结果结束,但我只是在试图弄清楚它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-06 15:54:04

怎么样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sweep(trqldnum,2,unlist(trqldnum[1,]),"/")

unlist需要将数据帧的第一行转换为可以扫描的向量……

票数 2
EN

Stack Overflow用户

发布于 2011-04-06 02:41:34

将数据帧转换为矩阵并使用矩阵运算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m <- as.matrix(trqldnum)

trqldprop <- as.data.frame( t(t(m)/m[1,]) )

> trqldprop
  motorveh motorcyc    bicyc
1 1.000000 1.000000 1.000000
2 1.145729 1.147860 1.165138
3 1.140704 1.268482 1.146789
4 1.105528 1.217899 1.256881
5 1.182161 1.568093 1.577982
6 1.213568 1.513619 1.339450
7 1.242462 1.844358 1.587156
8 1.236181 1.929961 1.633028

请注意,我们需要转置矩阵(请参阅t(m)),因为当您将矩阵除以向量时,操作是按列完成的。

票数 3
EN

Stack Overflow用户

发布于 2011-04-06 03:35:14

我喜欢这些任务的plyr,因为它们允许您指定输出的格式。您可以将其转换为一个函数,该函数可以轻松地扩展到更多的列和不同的划分基准面。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FUN <- function(dat, baseRow = 1){
    require(plyr)   
    divisors <- dat[baseRow ,]
    adply(dat, 1, function(x) x / divisors)
}

FUN(trqldnum, 1)

  motorveh motorcyc    bicyc
1 1.000000 1.000000 1.000000
2 1.145729 1.147860 1.165138
3 1.140704 1.268482 1.146789
4 1.105528 1.217899 1.256881
5 1.182161 1.568093 1.577982
6 1.213568 1.513619 1.339450
7 1.242462 1.844358 1.587156
8 1.236181 1.929961 1.633028
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5560772

复制
相关文章
dataframe行变换为列
使用 import org.apache.spark.sql.functions 里面的函数,具体的方式可以看 functions :
机器学习和大数据挖掘
2019/07/01
1.1K0
如何遍历pandas当中dataframe的行
现在需要遍历上面DataFrame的行。对于每一行,都希望能够通过列名访问对应的元素(单元格中的值)。也就是说,需要类似如下的功能:
马哥Python
2019/06/27
4K0
在pandas中遍历DataFrame行
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
用户7886150
2020/12/26
3.2K0
安装MPICH并运行第一行代码
如果报错说“Aborting because C++ compiler does not work.”,就安装下编译器:
小锋学长生活大爆炸
2022/08/19
1.8K0
安装MPICH并运行第一行代码
安装MPICH并运行第一行代码
如果报错说“Aborting because C++ compiler does not work.”,就安装下编译器:
小锋学长生活大爆炸
2022/09/21
2.5K0
安装MPICH并运行第一行代码
在Vim/Vi中删除行、多行、范围、所有行及包含模式的行
使用linux服务器,免不了和vi编辑打交道,命令行下删除数量少还好,如果删除很多,光靠删除键一点点删除真的是头痛,还好Vi有快捷的命令可以删除多行、范围。
子润先生
2021/06/24
109.2K0
python dataframe 一行变多行
'DataFrame' object has no attribute 'explode'
机器学习和大数据挖掘
2022/09/07
1.5K0
python dataframe 一行变多行
Pandas DataFrame显示行和列的数据不全
pd.set_option('display.max_columns', None)
用户7886150
2020/12/26
6.7K0
spark按某几列删除dataframe重复行
想根据 id 和 lable 来删除重复行,即删掉 id=2 且 lable=2 的重复行。利用 distinct 无法删除
机器学习和大数据挖掘
2019/07/02
2.3K0
计算代码有多少行,计算项目有多少行代码
高久峰
2023/06/29
1570
DataFrame的apply()、applymap()、map()方法[通俗易懂]
对DataFrame对象中的某些行或列,或者对DataFrame对象中的所有元素进行某种运算或操作,我们无需利用低效笨拙的循环,DataFrame给我们分别提供了相应的直接而简单的方法,apply()和applymap()。其中apply()方法是针对某些行或列进行操作的,而applymap()方法则是针对所有元素进行操作的。
全栈程序员站长
2022/08/29
4560
DataFrame的apply()、applymap()、map()方法[通俗易懂]
pandas按行按列遍历Dataframe的几种方式
iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。 itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。 iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。 示例数据
kirin
2021/04/30
7.1K0
python删除首行_Python删除文件第一行
for line in fileinput.input(“file.txt”, inplace = 1):
全栈程序员站长
2022/09/02
3.8K0
「R」dplyr 行式计算
通常 dplyr 和 R 更适合对列进行操作,而对行操作则显得更麻烦。这篇文章,我们将学习围绕rowwise() 创建的 row-wise 数据框的 dplyr 操作方法。
王诗翔呀
2022/01/21
6.2K0
【说站】Python DataFrame如何根据列值选择行
以上就是Python DataFrame根据列值选择行的方法,希望对大家有所帮助。
很酷的站长
2022/11/24
5.3K0
【说站】Python DataFrame如何根据列值选择行
vi中跳到文件的第一行和最后一行
由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦的过程,还好有各种比较快捷的方法归我们使用:
全栈程序员站长
2022/07/11
10.6K0
python | 给DataFrame增加index行名和columns列名
在工作中遇到需要对DataFrame加上列名和行名,不然会报错 开始的数据是这样的 需要的格式是这样的: 其实,需要做的就是添加行名和列名,下面开始操作下。 # a是DataFrame
努力在北京混出人样
2019/02/18
9.6K0
基于Pandas的DataFrame、Series对象的apply方法
这篇文章主要讲解DataFrame、Series对象的apply方法。 豆瓣排名前250电影数据集下载链接: https://pan.baidu.com/s/1M5EuIQEgNfJkGPvqYczb0g 密码: mhcj
潇洒坤
2018/09/10
3.7K0
基于Pandas的DataFrame、Series对象的apply方法
pandas dataframe apply 传入外部参数 args
# !/usr/bin/python3 import pandas as pd # 如果x小于threshold就等于1,否则等于0 def juege_threshold(x,threshold): return 1 if x<=threshold else 0 data_dict={"values":[1,3,5,7,9,11,13,15,17,19]} data_df=pd.DataFrame(data_dict) print(data_df) data_df["values_7"]=
机器学习和大数据挖掘
2022/05/13
2.3K0
pandas dataframe apply 传入外部参数 args
点击加载更多

相似问题

按行计算比例

41

如何迭代dataframe中的所有行并返回所有行的结果?

14

选择所有行并忽略第一行

42

计算熊猫dataFrame中所有行差之和

22

使用apply函数并选择行

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文