我有以下数据集:
import pandas as pd
w = pd.Series(['EY', 'EY', 'EY', 'KPMG', 'KPMG', 'KPMG', 'BAIN', 'BAIN', 'BAIN'])
x = pd.Series([2020,2019,2018,2020,2019,2018,2020,2019,2018])
y = pd.Series([100000, 500000, 1000000, 50000, 100000, 40000, 1000, 500, 4000])
z = pd.Series([10000, 10000, 20000, 25000, 50000, 10000, 100000, 50500, 120000])
df = pd.DataFrame({'consultant': w, 'fiscal_year':x, 'actual_cost':y, 'budgeted_cost':z})
indexer_consultant_fy = ['consultant', 'fiscal_year']
df = df.set_index(indexer_consultant_fy).sort_index(ascending=True)
df['actual_budget_pct_diff'] = df.pct_change(axis='columns',fill_method='ffill')['budgeted_cost']
如何在不切换数据帧中的列的情况下,在最后一行代码中切换实际的\u成本和预算的\u成本?你知道吗
结果应该是,当实际成本高于预算成本时,实际预算成本差异将是一个正数?谢谢大家!你知道吗
只需指定
periods=-1
并选择列[actual_cost]
,如下所示:因为您只需要计算两列之间的pct\u变化,所以您可以手动执行,因为它仍然是矢量化的:
你会得到:
您可以轻松地将
df.pct_change
函数应用于另一个具有重排序列的数据帧,而无需更改df
本身的列。你知道吗注意,
df[['budgeted_cost', 'actual_cost']]
是一个新的数据帧,它不影响原始数据帧df
的列顺序。因此,df
的顺序仍按要求保留:相关问题 更多 >
编程相关推荐