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

dataframe的apply按行操作

时间:2024-09-24 16:24:28浏览次数:12  
标签: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

相关文章

  • scala中的apply和equal改写
    1.Scala对象的创建a.new:使用new关键字创建的对象b.伴生对象:使用object关键字创建一个单例对象c.apply:apply是一个方法,需要在伴生对象中实现这个方法2.Scala对象的所属类a.getClass:使用反射机制判断Scala对象所属的类b.isInstanceof:判断是否属于一个类型println(s1.......
  • 【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方法......
  • [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......