我正试图找到一种更为可悲的方法,使数据帧的所有行都超过某列中的某个值(在本例中是Quarter列)。
我想分割一个GDP统计数据框架,以获得2000年第一季度之后的所有行(2000q1)。目前,我通过获取GDP_df["Quarter"]列中等于2000q1的值的索引号来实现这一点(见下文)。这似乎太复杂了,必须有一个更简单,更习惯的方法来实现这一点。有什么想法吗?
当前方法:

def get_GDP_df():
    GDP_df = pd.read_excel(
        "gdplev.xls",
        names=["Quarter", "GDP in 2009 dollars"],
        parse_cols = "E,G", skiprows = 7)
    year_2000 = GDP_df.index[GDP_df["Quarter"] == '2000q1'].tolist()[0]
    GDP_df["Growth"] = (GDP_df["GDP in 2009 dollars"]
        .pct_change()
        .apply(lambda x: f"{round((x * 100), 2)}%"))
    GDP_df = GDP_df[year_2000:]
    return GDP_df

输出:
另外,在数据帧被切片之后,索引现在从212开始。是否有方法重新编号索引,使其从0或1开始?

最佳答案

以下是等效的:

year_2000 = (GDP_df["Quarter"] == '2000q1').idxmax()
GDP_df["Growth"] = (GDP_df["GDP in 2009 dollars"]
  .pct_change()
  .mul(100)
  .round(2)
  .apply(lambda x: f"{x}%"))
return GDP_df.loc[year_2000:]

10-04 17:04