code: def get_switchable_as_dense(network, component, attr, snapshots=None, inds=None):
      
  
      df = network.df(component)
      pnl = network.pnl(component)
  
      index = df.index
  
      varying_i = pnl[attr].columns
      fixed_i = df.index.difference(varying_i)
  
      if inds is not None:
          index = index.intersection(inds)
          varying_i = varying_i.intersection(inds)
          fixed_i = fixed_i.intersection(inds)
      if snapshots is None:
          snapshots = network.snapshots
      return (pd.concat([
          pd.DataFrame(np.repeat([df.loc[fixed_i, attr].values], len(snapshots), axis=0),
                       index=snapshots, columns=fixed_i),
          pnl[attr].loc[snapshots, varying_i]
      ], axis=1, sort=False).reindex(columns=index))
docs: Return a Dataframe for a time-varying component attribute with values for all
      non-time-varying components filled in with the default values for the
      attribute.
  
      Parameters
      ----------
      network : pypsa.Network
      component : string
          Component object name, e.g. 'Generator' or 'Link'
      attr : string
          Attribute name
      snapshots : pandas.Index
          Restrict to these snapshots rather than network.snapshots.
      inds : pandas.Index
          Restrict to these components rather than network.components.index
  
      Returns
      -------
      pandas.DataFrame
  
      Examples
      --------
      >>> get_switchable_as_dense(network, 'Generator', 'p_max_pu')