我试图找到一种更可恶的方法来使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:]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。