如何筛选Yahoo Finance获取的ADA-USD 0.1-1美元区间的Close价格数据
解决方案
不需要使用for循环实现筛选,直接用pandas内置的布尔索引功能就可以高效完成需求,操作方式如下:
完整实现代码
可直接在你原有代码基础上添加筛选逻辑即可:
import yfinance as yf import pandas as pd import datetime import pandas_datareader.data as web start = datetime.date(2020, 9, 17) end = datetime.date(2021, 9, 16) dFrame = web.DataReader('ADA-USD', 'yahoo', start, end) pd.options.display.width = 0 pd.set_option("display.max_rows", 2000) # 新增筛选逻辑:提取收盘价在0.1-1美元之间的记录 # 写法1:逻辑运算符判断,灵活性更高,可自由调整边界包含规则 filtered_df = dFrame[(dFrame['Close'] >= 0.1) & (dFrame['Close'] <= 1)] # 写法2:between方法,更简洁,默认包含左右两端边界值 # filtered_df = dFrame[dFrame['Close'].between(0.1, 1)] # 输出筛选后的结果 print(filtered_df)
注意事项
- 多个逻辑条件组合时,每个条件必须用小括号包裹,否则会因为运算符优先级问题报错
- 不推荐用for循环遍历DataFrame行做判断,不仅写法繁琐,运行效率远低于pandas的向量化操作,还容易出现索引、赋值类错误
- 如果需要排除边界值,把
>=改成>、<=改成<即可;用between方法的话可以加参数inclusive='neither'实现不包含两端 - 如果需要将筛选后的数据保存到本地,可添加代码:
filtered_df.to_csv('ADA_USD_filtered.csv', encoding='utf-8-sig')
内容的提问来源于stack exchange,提问作者J.R. BEATS
相关产品推荐
相关产品推荐

