python - 比较列中的结果并附加到 pandas 数据框
问题描述
我正在做一个虚拟项目来磨练我的 python 技能,但我遇到了一个问题。我有一个 pandas 列,里面有很多值,我想做以下事情(我设置了 chunksize = 1440,因为我想处理 1440 组中的数据并分别存储每组 1440 的输出。):
取列的第一个值(让它成为'x')遍历剩余的(1439)个值,如果你找到一个大于'x'的值,让它成为'y'。如果您发现一个条目的值比“y”大 10,请在单独的列中输入“利润”。或者,如果您发现一个条目的值比“y”小 10,则在单独的列中输入“损失”。这是我尝试过的:
import pandas as pd
for df in pd.read_csv('C:/Users/Workstation/.spyder-py3/AAPL.USUSD_Candlestick_1_M_BID_14.11.2018-28.11.2020 (1).csv',chunksize=1440):
df = df[ df["Volume"] != 0]
df['Changing'] = ''
df.loc[(df.High.shift() - df.High).where(lambda x:x>3).dropna().index+1, 'Changing'] = "Profit"
df.loc[(df.High.shift() - df.High).where(lambda x:x<3).dropna().index+1, 'Changing'] = "Loss"
但我得到了错误:
'[960] not in index'
我认为当专栏结束时循环不会停止。有没有办法来解决这个问题?
我知道这很多,但任何帮助将不胜感激。
提前致谢...
解决方案
for df in pd.read_csv('C:/Users/Workstation/.spyder-py3/AAPL.USUSD_Candlestick_1_M_BID_14.11.2018-28.11.2020 (1).csv',chunksize=1440):
df = df[ df["Volume"] != 0]
df['Changing'] = ''
df.loc[(df.High.shift() - df.High).where(lambda x: x > 10).dropna().index+1, 'Changing'] = "Profit"
df.loc[(df.High.shift() - df.High).where(lambda x: x < 10).dropna().index+1, 'Changing'] = "Loss"
推荐阅读
- python - Matlab / Python中两个图像之间的精细百分比(%)相似度指数
- regex - 整个文本匹配,但不能在命名组中分组
- flutter - 无法在新设置上编译颤振应用程序
- rss-reader - qt上写rss阅读器的教程
- python-3.x - 在评估人口时,我应该使用对象还是多值字典?
- css - 第三个元素在 Safari 中以新行结束
- glsl - 我想链接 glslang 和 SPIRV 时出现 LINK 错误
- django - Django Autocomplete Light - “无法加载结果”
- java - 为什么 Pattern.matches("[a*mn]","aaaa") 不返回 true?获得所需输出的正确代码应该是什么?
- ios - CoreData:错误:NSFetchedResultsController:索引 0 部分中索引 0 处没有对象