【问题标题】:How do I remove rows of a Pandas DataFrame based on a certain condition?如何根据特定条件删除 Pandas DataFrame 的行?
【发布时间】:2022-06-15 01:19:44
【问题描述】:
import yfinance as yf
import numpy as np
import pandas as pd

ETF_DB = ['QQQ', 'EGFIX']
fundsret = yf.download(ETF_DB, start=datetime.date(2020,12,31), end=datetime.date(2022,4,30), interval='1mo')['Adj Close'].pct_change()
df = pd.DataFrame(fundsret)
df

给我:

我正在尝试删除数据框中不是月末的行,例如 2021-03-22 行。如何让数据框通过并删除日期不以“01”结尾的行?

【问题讨论】:

    标签: python pandas dataframe yfinance


    【解决方案1】:
    df.reset_index(inplace=True)
    
    # Convert the date to datetime64
    df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
    
    #select only day = 1
    filtered = df.loc[df['Date'].dt.day == 1]
    

    【讨论】:

      【解决方案2】:

      您是指开始月份吗?

      你可以使用:

      df = df[df.index.day==1]
      

      可重现的例子:

      df = pd.DataFrame(columns=['A', 'B'],
                        index=['2021-01-01', '2021-02-01', '2021-03-01', '2021-03-22'])
      df.index = pd.to_datetime(df.index, dayfirst=False)
      

      输出:

                    A    B
      2021-01-01  NaN  NaN
      2021-02-01  NaN  NaN
      2021-03-01  NaN  NaN
      

      【讨论】:

        猜你喜欢
        • 2018-01-11
        • 2022-06-21
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-27
        • 1970-01-01
        • 2020-03-27
        相关资源
        最近更新 更多