首页 > 解决方案 > 如何使用 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

标签: pythonpandasdataframe

解决方案


使用DatetimeIndex.monthIndex.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']

推荐阅读