加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-将DataFrame的所有行切成超过某个列中的某个值

发布时间:2020-12-17 17:37:32 所属栏目:Python 来源:网络整理
导读:我试图找到一种更可恶的方法来使DataFrame的所有行都超过某个列(在这种情况下为Quarter列)中的某个值. 我想对GDP统计数据的DataFrame进行切片,以获取2000年第一季度(2000q1)之后的所有行.目前,我正在通过获取GDP_df [“ Quarter”]列中等于2000q1的值的索引

我试图找到一种更可恶的方法来使DataFrame的所有行都超过某个列(在这种情况下为Quarter列)中的某个值.

我想对GDP统计数据的DataFrame进行切片,以获取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

输出:

另外,在对DataFrame进行切片之后,索引现在从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:]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读