首页 > 其他分享 >dataframe的apply按行操作

dataframe的apply按行操作

时间:2024-09-24 16:24:28浏览次数:10  
标签:Buy Corona Masks dataframe 按行 apply 天以 1000

1. 原始数据及要求

+---------------+-----------+---------------+--------+
| stock_name | operation | operation_day | price |
+---------------+-----------+---------------+--------+
| Leetcode | Buy | 1 | 1000 |
| Corona Masks | Buy | 2 | 10 |
| Leetcode | Sell | 5 | 9000 |
| Handbags | Buy | 17 | 30000 |
| Corona Masks | Sell | 3 | 1010 |
| Corona Masks | Buy | 4 | 1000 |
| Corona Masks | Sell | 5 | 500 |
| Corona Masks | Buy | 6 | 1000 |
| Handbags | Sell | 29 | 7000 |
| Corona Masks | Sell | 10 | 10000 |
+---------------+-----------+---------------+--------+
输出:
+---------------+-------------------+
| stock_name | capital_gain_loss |
+---------------+-------------------+
| Corona Masks | 9500 |
| Leetcode | 8000 |
| Handbags | -23000 |
+---------------+-------------------+ Leetcode 股票在第一天以1000美元的价格买入,在第五天以9000美元的价格卖出。资本收益=9000-1000=8000美元。
Handbags 股票在第17天以30000美元的价格买入,在第29天以7000美元的价格卖出。资本损失=7000-30000=-23000美元。
Corona Masks 股票在第1天以10美元的价格买入,在第3天以1010美元的价格卖出。在第4天以1000美元的价格再次购买,在第5天以500美元的价格出售。最后,它在第6天以1000美元的价格被买走,在第10天以10000美元的价格被卖掉。资本损益是每次(’Buy'->'Sell')操作资本收益或损失的和=(1010-10)+(500-1000)+(10000-1000)=1000-500+9000=9500美元。

2. 读取数据

dataframe=pd.read_excel("原始数据.xlsx",sheet_name='Sheet1')    
dataframe['capital_gain_loss']=dataframe[['operation','price']].apply(lambda x:-x[1] if x[0]=='Buy' else x[1],axis=1)
dataframe=dataframe.groupby(['stock_name'],as_index=False).aggregate({'capital_gain_loss':'sum'})

假设存在"原始数据.xlsx"文件,该文件包含“1. 原始数据及要求”中的数据。

其中,第二行的apply即是按行操作axis=1。

 

 

标签:Buy,Corona,Masks,dataframe,按行,apply,天以,1000
From: https://www.cnblogs.com/DidierFeng/p/18429429

相关文章

  • Spark(九)SparkSQL DataFrame
    DataFrameSparkSQL的DataFrameAPI允许我们使用DataFrame而不用必须去注册临时表或者生成SQL表达式,DataFrameAPI既有transformation操作也有action操作1.创建DataFrame从Spark数据源进行创建启动SparkShell[user@hadoop102spark-yarn]$bin/spark-shell查看Spark......
  • 获取两个 DataFrame 中某两列相同的项
    要获取两个DataFrame中某两列相同的项,可以使用pandas的merge方法或isin方法。以下是两种方法的示例。方法1:使用mergemerge方法可以用来根据多个列将两个DataFrame合并。通过设置how='inner',可以得到两个DataFrame中在指定列上相同的项。importpandasaspd......
  • scala中的apply和equal改写
    1.Scala对象的创建a.new:使用new关键字创建的对象b.伴生对象:使用object关键字创建一个单例对象c.apply:apply是一个方法,需要在伴生对象中实现这个方法2.Scala对象的所属类a.getClass:使用反射机制判断Scala对象所属的类b.isInstanceof:判断是否属于一个类型println(s1.......
  • 数据处理与统计分析篇-day08-apply()自定义函数与分组操作
    一.自定义函数概述当Pandas自带的API不能满足需求,例如:我们需要遍历的对Series中的每一条数据/DataFrame中的一列或一行数据做相同的自定义处理,就可以使用Apply自定义函数apply函数可以接收一个自定义函数,可以将Series对象的逐个值或DataFrame的行/列数据传递给自......
  • 【python】Panda 之Dataframe 基础api讲解代码 建议在Jupyter Notebook 中运行
    建议在JupyterNotebook中运行jupyternotebook环境搭建文章目录1.dataframe常用属性2.dataframe的常用方法3.dataframe对象的布尔值操作4.datafrane对象的计算5.更改series和dataframe对象5.2修改行名和列名5.3添加删除插入列6.导入和导出数据6.1导......
  • Pandas中DataFrame表格型数据结构
    目录1、DataFrame是什么2、创建一个dataframe3、获取dataframe的行、列索引4、获取dataframe的值1、DataFrame是什么series是有一组数据与一组索引(行索引)组成的数据结构,而dataframe是由一组数据与一对索引(行索引和列索引)组成的表格型数据结构。之所以叫表格型数据结......
  • [1064] Change values in a DataFrame based on different values
    TochangevaluesinaDataFramebasedondifferentvalues,youcanuseseveralmethodsinPandas.Hereareafewcommonapproaches:UsinglocforConditionalReplacementYoucanusethelocmethodtoreplacevaluesbasedonacondition:importpandasasp......
  • 使用call、apply和bind改变函数执行时的上下文
    使用call、apply和bind都能够是函数的上下文发生改变,那我们来具体看看这记者之间的区别吧。call方法:语法:call([thisObj[,arg1[,arg2[,  [,.argN]]]]])定义:调用一个对象的一个方法,以另一个对象替换当前对象。说明:call方法可以用来代替另一个对象调用一个方法。call方法......
  • JavaScript-apply、bind、call
    call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向区别 applyapply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数,以数组的形式传改变this指向后原函数会立即执行,且此方法只是临时改变this指向一次当第一个参数......
  • [1061] Plotting a GeoDataFrame by matplotlib
    importgeopandasasgpdimportmatplotlib.pyplotaspltfromshapely.geometryimportPoint,LineString,Polygon#Createsamplegeometriespoints=[Point(.5,.5),Point(1.5,1.5),Point(2.5,2.5),Point(3.5,3.5),Point(5,5)]lines=[LineString([(5,0......