如何根据上一行信息更新Pandas DataFrame

穆罕默德雷扎·海达里(Mohammadreza Heidari)

我在Pandas中有以下DataFrame,我想检查HH值是否大于上一行的High值,如果更大,则更新前几行的HH值并将当前HH替换为Nonvalue。

如何检查上一行的HH> High值并按照上述步骤进行更新?

在此处输入图片说明

请注意,我不想移动一列中的所有数据(因此我不认为使用shift是解决方案),我只是想根据上一行的“高”数据来更改一个特定的数据

关于计划:

我正在尝试创建一个程序,以查找指定金融市场的最小值和最大值,并且我正在使用“ peakdetect”库https://pypi.org/project/peakdetect/

它只是生成Minima和Maxima的2D列表:

density = 2
# Temp ref to the array of minima and maxima
high_arr = peakdetect(y_axis = 
clean_dataframe['High'],x_axis=clean_dataframe.index,lookahead=density)
low_arr = peakdetect(y_axis = 
clean_dataframe['Low'],x_axis=clean_dataframe.index,lookahead=density)

# first index is always for maxima
_hh = pd.DataFrame(high_arr[0])
_hh = _hh.rename(columns={0:'Index',1:'HH'})

# second index is always for minima
_ll = pd.DataFrame(low_arr[1])
_ll = _ll.rename(columns={0:'Index',1:'LL'})

# join all minima and maxima to the

full_df=
clean_dataframe.join(_hh.set_index('Index')).join(_ll.set_index('Index'))

'''

clear_dataframe结果:

问题是某些LL(谷)不准确,有时上一行的低价是正确的LL,因此我必须按照图中所述测量和更改LL行。

乔·费尔兹(Joe Ferndz)

为了帮助您了解shift(-1)的工作原理,请查看以下解决方案。我查看了图像并创建了原始DataFrame。

import pandas as pd
import numpy as np
df = pd.DataFrame({'Dates':['2021-02-04 19:00:00','2021-02-04 20:00:00',
                            '2021-02-04 21:00:00','2021-02-04 22:00:00',
                            '2021-02-04 23:00:00','2021-02-05 00:00:00',
                            '2021-02-05 01:00:00','2021-02-05 02:00:00'],
                   'Close':[1.19661,1.19660,1.19611,1.19643,1.19664,
                            1.19692,1.19662,1.19542],
                   'High' :[1.19679,1.19678,1.19680,1.19679,1.19688,
                            1.19721,1.19694,1.19682],
                   'Low'  :[1.19577,1.19637,1.19604,1.19590,1.19632,
                            1.19634,1.19622,1.19537],
                   'Open' :[1.19630,1.19662,1.19665,1.19613,1.19646,
                            1.19662,1.19690,1.19665],
                   'Status':['ok']*8,
                   'Volume':[2579,1858,1399,788,1437,2435,2898,2641],
                   'HH'   :[np.NaN]*5+[1.19721]+[np.NaN]*2,
                   'LL'   :[np.NaN]*8})
print (df)

#make a copy of df['High'] into df'NewHigh']
df['NewHigh'] = df['High']

#if next row in 'HH' is greater than 'High', then update 'NewHigh' with next row from 'HH'
df.loc[df['HH'].shift(-1) > df['High'],'NewHigh'] = df['HH'].shift(-1)

print (df[['Dates','High','HH','NewHigh']])

其输出将是:

                 Dates     High       HH  NewHigh
0  2021-02-04 19:00:00  1.19679      NaN  1.19679
1  2021-02-04 20:00:00  1.19678      NaN  1.19678
2  2021-02-04 21:00:00  1.19680      NaN  1.19680
3  2021-02-04 22:00:00  1.19679      NaN  1.19679
4  2021-02-04 23:00:00  1.19688      NaN  1.19721 # <- This got updated
5  2021-02-05 00:00:00  1.19721  1.19721  1.19721
6  2021-02-05 01:00:00  1.19694      NaN  1.19694
7  2021-02-05 02:00:00  1.19682      NaN  1.19682

注意:我创建了一个新列来显示更改。您可以直接更新High除了'NewHigh'在df.loc行上,您还可以输入“ High”。这应该够了吧。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据上一行信息更新Pandas DataFrame

来自分类Dev

如何根据上一行信息更新Pandas DataFrame

来自分类Dev

在一行上删除 Pandas DataFrame 中的多列

来自分类Dev

如何将Pandas DataFrame中的值与上一行和上一列中的值进行比较?

来自分类Dev

Python Dataframe获取上一行

来自分类Dev

Pandas Dataframe根据上一行限制在该列中的最大值的基础上,向新列添加值

来自分类Dev

Python Dataframe:根据前一行值选择行

来自分类Dev

当Pandas DataFrame中下一行的所有列为ara NaN时更新行索引

来自分类Dev

Pandas DataFrame-删除特定列中与上一行具有相同值的行

来自分类Dev

如何根据DataFrame中前一行的值标记某些值?

来自分类Dev

根据列值在DataFrame中查找下一行

来自分类Dev

如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

来自分类Dev

如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

来自分类Dev

如何通过一次读取一行来转置 Pandas Dataframe 中的数据?

来自分类Dev

一次处理一行 Pandas Dataframe 的问题

来自分类Dev

根据另一行中的值选择一行 DataFrame 中的值

来自分类Dev

根据列表值更新Pandas Dataframe中的行

来自分类Dev

如何在熊猫DataFrame的每一行上运行函数

来自分类Dev

如何仅从DataFrame上的groupby中获取第一行?

来自分类Dev

如何在熊猫的DataFrame中获取有条件的上一行

来自分类Dev

如何从Pandas DataFrame的每一行中选择特定的列?

来自分类Dev

如何将Pandas DataFrame的每一行转换为新的nxm矩阵?

来自分类Dev

如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

来自分类Dev

如何在Pandas DataFrame中获得最小值不为零的第一行索引?

来自分类Dev

如何在Pandas DataFrame中的一行中传递XML中不同标签的元素?

来自分类Dev

如何防止Pandas Dataframe在每一行重复列名?

来自分类Dev

计算Pandas DataFrame中每一行的频率

来自分类Dev

Python Pandas Dataframe存储下一行值

来自分类Dev

CSV的第一行和最后一行的Python Pandas DataFrame

Related 相关文章

  1. 1

    如何根据上一行信息更新Pandas DataFrame

  2. 2

    如何根据上一行信息更新Pandas DataFrame

  3. 3

    在一行上删除 Pandas DataFrame 中的多列

  4. 4

    如何将Pandas DataFrame中的值与上一行和上一列中的值进行比较?

  5. 5

    Python Dataframe获取上一行

  6. 6

    Pandas Dataframe根据上一行限制在该列中的最大值的基础上,向新列添加值

  7. 7

    Python Dataframe:根据前一行值选择行

  8. 8

    当Pandas DataFrame中下一行的所有列为ara NaN时更新行索引

  9. 9

    Pandas DataFrame-删除特定列中与上一行具有相同值的行

  10. 10

    如何根据DataFrame中前一行的值标记某些值?

  11. 11

    根据列值在DataFrame中查找下一行

  12. 12

    如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

  13. 13

    如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

  14. 14

    如何通过一次读取一行来转置 Pandas Dataframe 中的数据?

  15. 15

    一次处理一行 Pandas Dataframe 的问题

  16. 16

    根据另一行中的值选择一行 DataFrame 中的值

  17. 17

    根据列表值更新Pandas Dataframe中的行

  18. 18

    如何在熊猫DataFrame的每一行上运行函数

  19. 19

    如何仅从DataFrame上的groupby中获取第一行?

  20. 20

    如何在熊猫的DataFrame中获取有条件的上一行

  21. 21

    如何从Pandas DataFrame的每一行中选择特定的列?

  22. 22

    如何将Pandas DataFrame的每一行转换为新的nxm矩阵?

  23. 23

    如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

  24. 24

    如何在Pandas DataFrame中获得最小值不为零的第一行索引?

  25. 25

    如何在Pandas DataFrame中的一行中传递XML中不同标签的元素?

  26. 26

    如何防止Pandas Dataframe在每一行重复列名?

  27. 27

    计算Pandas DataFrame中每一行的频率

  28. 28

    Python Pandas Dataframe存储下一行值

  29. 29

    CSV的第一行和最后一行的Python Pandas DataFrame

热门标签

归档