Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions databricks/koalas/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -10094,16 +10094,18 @@ def __getitem__(self, key):

if key is None:
raise KeyError("none key")
if isinstance(key, (str, tuple, list)):
if isinstance(key, Series):
return self.loc[key.astype(bool)]
elif isinstance(key, (str, tuple)):
return self.loc[:, key]
elif is_list_like(key):
return self.loc[:, list(key)]
elif isinstance(key, slice):
if any(type(n) == int or None for n in [key.start, key.stop]):
# Seems like pandas Frame always uses int as positional search when slicing
# with ints.
return self.iloc[key]
return self.loc[key]
elif isinstance(key, Series):
return self.loc[key.astype(bool)]
raise NotImplementedError(key)

def __setitem__(self, key, value):
Expand Down
6 changes: 6 additions & 0 deletions databricks/koalas/tests/test_dataframe.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ def test_dataframe(self):
kser = ks.from_pandas(pser)
self.assert_eq(pd.DataFrame(pser), ks.DataFrame(kser))

# check kdf[pd.Index]
pdf, kdf = self.df_pair
column_mask = pdf.columns.isin(["a", "b"])
index_cols = pdf.columns[column_mask]
self.assert_eq(pdf[index_cols].shape, kdf[index_cols].shape)

def test_inplace(self):
pdf, kdf = self.df_pair

Expand Down