比较后将当前行值分配给熊猫数据框的前一行

用户名

我在下面的python中有熊猫数据框。

full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0
 bottle_a  AX80    20200925    12885.50  12984.25   62295.0
 bottle_a  AX80    20200926    12880.00  13000.00   14224.0

首先,我想根据column来检测哪一行落在星期六Date_YMD然后,在周六找出音量值,volume如果上一行的值大于当前行的值,则将该值分配给上一行

上表的最终熊猫框架看起来像这样;

full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0
 bottle_a  AX80    20200925    12885.50  12984.25   14224.0
 bottle_a  AX80    20200926    12880.00  13000.00   14224.0

星期六的交易量可以通过下面的代码获得;

df['Date_YMD'] = pd.to_datetime(df['Date_YMD'], format='%Y%m%d')
sat_volume = df.loc[df['Date_YMD'].dt.dayofweek.eq(5), 'volume']

问题是,在比较值之后如何将其分配sat_volume给上一行volume

我正在使用python 3.8

Shubham Sharma

让我们创建布尔掩码m1m2然后对这些掩码使用布尔索引,以填充满足volume指定的条件的列m1m2

m1 = df['volume'] > df['volume'].shift(-1)
m2 = df['Date_YMD'].shift(-1).dt.weekday.eq(5)
df.loc[m1 & m2, 'volume'] = df['volume'].shift(-1)

  full_name serial   Date_YMD     prc1      prc2   volume
0  bottle_a   AX80 2020-09-22  12874.5  12927.75  61023.0
1  bottle_a   AX80 2020-09-23  12878.5  12926.75  61023.0
2  bottle_a   AX80 2020-09-24  12872.5  12928.75  61023.0
3  bottle_a   AX80 2020-09-25  12885.5  12984.25  14224.0
4  bottle_a   AX80 2020-09-26  12880.0  13000.00  14224.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将列值分配给熊猫数据框中的唯一行

如何将整个列表分配给熊猫数据框的每一行

将满足条件的第一行的值分配给数据框

将前一行与当前行进行比较

根据每行的前一行中的值更新熊猫数据框当前行属性

如何在数据框中检查前一行值与当前行值

python将前一行的值与当前行进行比较

将值与上一行中的值进行比较,然后将值分配给另一列(熊猫)-如何加快速度?

MySQL将前一行的值减到当前行

将前一行值减去当前行

将前一行值与当前行相加

熊猫将groupby sum值分配给原始表的最后一行

熊猫-获取当前行,将值与X的前一行进行比较,然后返回匹配的数量(在x%范围内)

创建一列,根据另一行中的事件将值分配给数据框中的一行

SQL 视图。如何根据前一行和当前行的比较计算行的值

检查当前行中的所有列值是否小于pandas数据框中的前一行

如何在熊猫数据框中从当前行中减去前一行并将其应用于每一行;不使用循环?

比较当前行值和上一行值

如何从另一行获取值以放置在熊猫数据框中的当前行中?

熊猫将值分配给已过滤的数据框/系列。为什么不一致?

如何将前一行的值与当前行的值相乘

在SQL(Postgres)中动态将前一行值添加到当前行值

将索引列分配给空的熊猫数据框

如何使用python在新数据框中复制当前行和下一行的值?

用前一行值减去当前行值,并获得当前行的余额

熊猫数据框,将值分配给星期几。特征提取

根据两个熊猫数据框之间的条件将值分配给新列

在熊猫.loc []分配中访问下一行,上一行或当前行

如何通过比较另一个数据框中的值将值分配给数据框的列