【问题标题】:How can I print certain rows from a CSV in pandas如何从 Pandas 中的 CSV 打印某些行
【发布时间】:2018-10-21 22:46:07
【问题描述】:

我的问题是我有一个超过 40000 行的大数据框,现在我想选择从 2013-01-01 00:00:00 到 2013-31-12 00:00:00 的行

print(df.loc[df['localhour'] == '2013-01-01 00:00:00'])

这是我现在的代码,但我不能选择一个间隔打印出来......有什么想法吗?

【问题讨论】:

  • 您可以使用datetime 对象并比较日期是否比以前小或大。这意味着您还可以比较它们是否在特定时间间隔内。
  • 以下解决方案之一有帮助吗?随意接受一个(在左边打勾),或要求澄清。

标签: python python-3.x pandas csv datetime


【解决方案1】:

一种方法是将您的索引设置为datetime,然后将pd.DataFrame.loc 与字符串索引器一起使用:

df = pd.DataFrame({'Date': ['2013-01-01', '2014-03-01', '2011-10-01', '2013-05-01'],
                   'Var': [1, 2, 3, 4]})

df['Date'] = pd.to_datetime(df['Date'])

res = df.set_index('Date').loc['2010-01-01':'2013-01-01']

print(res)

            Var
Date           
2013-01-01    1
2011-10-01    3

【讨论】:

    【解决方案2】:

    创建一个日期时间对象,然后应用条件:

    print(df)
    
    date
    0   2013-01-01
    1   2014-03-01
    2   2011-10-01
    3   2013-05-01
    
    df['date']=pd.to_datetime(df['date'])
    df['date'].loc[(df['date']<='2013-12-31 00:00:00') & (df['date']>='2013-01-01 00:00:00')]
    

    输出:

    0   2013-01-01
    3   2013-05-01
    

    【讨论】:

    • 感谢您的解决方案,但我想打印从 2013-01-01 00:00 到 2013-31-12 00:00 的全年
    • 此解决方案将采用该年之间的每个日期。我展示的示例恰好在该年份范围内只有两个日期。
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2022-06-29
    • 2018-10-09
    • 2011-09-26
    相关资源
    最近更新 更多