python - 如何使用 python 从 csv 文件中提取特定值?
问题描述
我有一个包含 10 年数据的 csv 文件,我想从该大文件中包含的 2018 年中提取两个特定值。
df = pd.read_csv(fn, parse_dates=[0])
df = df.set_index('date')
这样做是为了提取 2018 年每个月的最后一个交易日:(仅输出日期,没有其他数据)
start_date = '2018-01-01'
end_date = '2018-12-31'
months_of_2018 = pd.date_range(start_date, end_date, freq='BM')
print(months_of_2018)
我想提取属于 s_001 的 6 月和 9 月值的数据。我怎样才能做到这一点?下面是我的 csv 文件的一部分的外观示例。
date s_001 s_002
2018-01-31 0.0031 0.0025
2018-02-28 0.0024 0.0012
2018-03-30 0.0021 -0.0011
2018-04-30 -0.0010 0.0023
2018-05-31 0.0012 0.0028
2018-06-29 0.0015 0.0020
2018-07-31 0.0025 0.0015
2018-08-31 0.0017 0.0003
2018-09-28 -0.0025 0.0009
2018-10-31 0.0030 0.0013
2018-11-30 0.0018 0.0005
2018-12-31 0.0019 0.0010
解决方案
使用DatetimeIndex.month
和Index.isin
用于通过多个sDataFrame.loc
过滤:month
df = pd.read_csv(fn, index_col=[0], parse_dates=[0])
s = df.loc[df.index.month.isin([6,9]) & (df.index.year==2008), 's_001']
print (s)
date
2018-06-29 0.0015
2018-09-28 -0.0025
Name: s_001, dtype: float64
或者:
s = df.loc[df.index.strftime('%m-%Y').isin(['06-2018','09-2018']), 's_001']
推荐阅读
- javascript - “无法读取 null 的属性‘过滤器’”(与我在这里看到的其他解决方案略有不同)
- java - 需要帮助解释 Java 线程转储
- jquery - 在 NodeJS-Express 应用程序的 DOM 操作中使用 jQuery
- ios - 在领域中存储值
- php - DevTools 中的错误不再显示 XHR 响应
- python - 我无法下载 cv2,无论出于何种原因它都不起作用
- image - tensorflow仿射变换填充值
- html - 如何将跨度与h2放在同一行?
- python - 使用基本用户名和密码通过 Python 从 CloudFront 下载文件
- c++ - 显示带有二维数组的文件