Skip to content

Instantly share code, notes, and snippets.

@martindurant
Created September 18, 2019 21:59
Show Gist options
  • Save martindurant/774e428c7e3e349de9d5dfad834a93fd to your computer and use it in GitHub Desktop.
Save martindurant/774e428c7e3e349de9d5dfad834a93fd to your computer and use it in GitHub Desktop.
Pangeo CSV loader
from intake.catalog import Catalog
from intake.catalog.local import LocalCatalogEntry
import pandas as pd
class PangeoCSVSource(Catalog):
_grid = [None]
container = 'catalog'
name = 'pangeo_csv'
version = '0.0.1'
def __init__(self, url=None, df=None, metadata=None):
super().__init__(metadata=metadata)
if url:
df = pd.read_csv(url)
self._df = df
def __getitem__(self, item):
return self._get_entry(item)
def _get_entries(self):
return self._df.index.tolist()
def _get_entry(self, name):
row = self._df.loc[name]
return LocalCatalogEntry(str(name), "unknown", "zarr",
args={'urlpath': row['zstore']},
metadata=row.to_dict(), catalog=self)
@property
def qgrid(self):
import qgrid
widget = qgrid.show_grid(self._df)
self._grid[0] = widget
return widget
@classmethod
def from_selection(cls):
if cls._grid is None:
raise ValueError("No grid selection")
return cls(df=cls._grid[0].get_changed_df())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment