Summaries and plotting: Fix groupby with two bys for pandas 1.0.x
This commit is contained in:
parent
62887b7870
commit
0df8fc50cf
@ -63,7 +63,7 @@ def assign_locations(n):
|
|||||||
def calculate_nodal_cfs(n,label,nodal_cfs):
|
def calculate_nodal_cfs(n,label,nodal_cfs):
|
||||||
#Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff
|
#Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff
|
||||||
for c in n.iterate_components((n.branch_components^{"Line","Transformer"})|n.controllable_one_port_components^{"Load","StorageUnit"}):
|
for c in n.iterate_components((n.branch_components^{"Line","Transformer"})|n.controllable_one_port_components^{"Load","StorageUnit"}):
|
||||||
capacities_c = c.df[opt_name.get(c.name,"p") + "_nom_opt"].groupby((c.df.location,c.df.carrier)).sum()
|
capacities_c = c.df.groupby(["location","carrier"])[opt_name.get(c.name,"p") + "_nom_opt"].sum()
|
||||||
|
|
||||||
if c.name == "Link":
|
if c.name == "Link":
|
||||||
p = c.pnl.p0.abs().mean()
|
p = c.pnl.p0.abs().mean()
|
||||||
@ -74,7 +74,8 @@ def calculate_nodal_cfs(n,label,nodal_cfs):
|
|||||||
else:
|
else:
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
p_c = p.groupby((c.df.location,c.df.carrier)).sum()
|
c.df["p"] = p
|
||||||
|
p_c = c.df.groupby(["location","carrier"])["p"].sum()
|
||||||
|
|
||||||
cf_c = p_c/capacities_c
|
cf_c = p_c/capacities_c
|
||||||
|
|
||||||
@ -118,7 +119,8 @@ def calculate_cfs(n,label,cfs):
|
|||||||
def calculate_nodal_costs(n,label,nodal_costs):
|
def calculate_nodal_costs(n,label,nodal_costs):
|
||||||
#Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff
|
#Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff
|
||||||
for c in n.iterate_components(n.branch_components|n.controllable_one_port_components^{"Load"}):
|
for c in n.iterate_components(n.branch_components|n.controllable_one_port_components^{"Load"}):
|
||||||
capital_costs = (c.df.capital_cost*c.df[opt_name.get(c.name,"p") + "_nom_opt"]).groupby((c.df.location,c.df.carrier)).sum()
|
c.df["capital_costs"] = c.df.capital_cost*c.df[opt_name.get(c.name,"p") + "_nom_opt"]
|
||||||
|
capital_costs = c.df.groupby(["location","carrier"])["capital_costs"].sum()
|
||||||
index = pd.MultiIndex.from_tuples([(c.list_name,"capital") + t for t in capital_costs.index.to_list()])
|
index = pd.MultiIndex.from_tuples([(c.list_name,"capital") + t for t in capital_costs.index.to_list()])
|
||||||
nodal_costs = nodal_costs.reindex(index|nodal_costs.index)
|
nodal_costs = nodal_costs.reindex(index|nodal_costs.index)
|
||||||
nodal_costs.loc[index,label] = capital_costs.values
|
nodal_costs.loc[index,label] = capital_costs.values
|
||||||
@ -139,7 +141,8 @@ def calculate_nodal_costs(n,label,nodal_costs):
|
|||||||
items = c.df.index[(c.df.carrier == "co2 stored") & (c.df.marginal_cost <= -100.)]
|
items = c.df.index[(c.df.carrier == "co2 stored") & (c.df.marginal_cost <= -100.)]
|
||||||
c.df.loc[items,"marginal_cost"] = -20.
|
c.df.loc[items,"marginal_cost"] = -20.
|
||||||
|
|
||||||
marginal_costs = (p*c.df.marginal_cost).groupby((c.df.location,c.df.carrier)).sum()
|
c.df["marginal_costs"] = p*c.df.marginal_cost
|
||||||
|
marginal_costs = c.df.groupby(["location","carrier"])["marginal_costs"].sum()
|
||||||
index = pd.MultiIndex.from_tuples([(c.list_name,"marginal") + t for t in marginal_costs.index.to_list()])
|
index = pd.MultiIndex.from_tuples([(c.list_name,"marginal") + t for t in marginal_costs.index.to_list()])
|
||||||
nodal_costs = nodal_costs.reindex(index|nodal_costs.index)
|
nodal_costs = nodal_costs.reindex(index|nodal_costs.index)
|
||||||
nodal_costs.loc[index,label] = marginal_costs.values
|
nodal_costs.loc[index,label] = marginal_costs.values
|
||||||
@ -206,7 +209,7 @@ def calculate_costs(n,label,costs):
|
|||||||
def calculate_nodal_capacities(n,label,nodal_capacities):
|
def calculate_nodal_capacities(n,label,nodal_capacities):
|
||||||
#Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff
|
#Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff
|
||||||
for c in n.iterate_components(n.branch_components|n.controllable_one_port_components^{"Load"}):
|
for c in n.iterate_components(n.branch_components|n.controllable_one_port_components^{"Load"}):
|
||||||
nodal_capacities_c = c.df[opt_name.get(c.name,"p") + "_nom_opt"].groupby((c.df.location,c.df.carrier)).sum()
|
nodal_capacities_c = c.df.groupby(["location","carrier"])[opt_name.get(c.name,"p") + "_nom_opt"].sum()
|
||||||
index = pd.MultiIndex.from_tuples([(c.list_name,) + t for t in nodal_capacities_c.index.to_list()])
|
index = pd.MultiIndex.from_tuples([(c.list_name,) + t for t in nodal_capacities_c.index.to_list()])
|
||||||
nodal_capacities = nodal_capacities.reindex(index|nodal_capacities.index)
|
nodal_capacities = nodal_capacities.reindex(index|nodal_capacities.index)
|
||||||
nodal_capacities.loc[index,label] = nodal_capacities_c.values
|
nodal_capacities.loc[index,label] = nodal_capacities_c.values
|
||||||
|
@ -111,13 +111,17 @@ def plot_map(components=["links","stores","storage_units","generators"],bus_size
|
|||||||
costs = pd.DataFrame(index=n.buses.index)
|
costs = pd.DataFrame(index=n.buses.index)
|
||||||
|
|
||||||
for comp in components:
|
for comp in components:
|
||||||
getattr(n,comp)["nice_group"] = getattr(n,comp).carrier.map(rename_techs_tyndp)
|
|
||||||
|
df = getattr(n,comp)
|
||||||
|
|
||||||
|
df["nice_group"] = df.carrier.map(rename_techs_tyndp)
|
||||||
|
|
||||||
attr = "e_nom_opt" if comp == "stores" else "p_nom_opt"
|
attr = "e_nom_opt" if comp == "stores" else "p_nom_opt"
|
||||||
|
|
||||||
costs = pd.concat((costs,(getattr(n,comp).capital_cost*getattr(n,comp)[attr]).groupby((getattr(n,comp).location,getattr(n,comp).nice_group)).sum().unstack().fillna(0.)),axis=1)
|
df["costs"] = df.capital_cost*df[attr]
|
||||||
|
|
||||||
|
costs = pd.concat((costs,df.groupby(by=["location","nice_group"]).sum()["costs"].unstack().fillna(0.)),axis=1)
|
||||||
|
|
||||||
print(comp,costs)
|
|
||||||
costs = costs.groupby(costs.columns,axis=1).sum()
|
costs = costs.groupby(costs.columns,axis=1).sum()
|
||||||
|
|
||||||
|
|
||||||
@ -127,13 +131,8 @@ def plot_map(components=["links","stores","storage_units","generators"],bus_size
|
|||||||
|
|
||||||
costs = costs[new_columns]
|
costs = costs[new_columns]
|
||||||
|
|
||||||
#print(costs)
|
|
||||||
#print(costs.sum())
|
|
||||||
|
|
||||||
costs = costs.stack()#.sort_index()
|
costs = costs.stack()#.sort_index()
|
||||||
|
|
||||||
#print(costs)
|
|
||||||
|
|
||||||
fig, ax = plt.subplots(subplot_kw={"projection":ccrs.PlateCarree()})
|
fig, ax = plt.subplots(subplot_kw={"projection":ccrs.PlateCarree()})
|
||||||
|
|
||||||
fig.set_size_inches(7,6)
|
fig.set_size_inches(7,6)
|
||||||
|
Loading…
Reference in New Issue
Block a user