Skip to content

Commit 038a904

Browse files
author
Marco Gorelli
committed
Avoid having to keep track of index names
1 parent 3806c2c commit 038a904

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

pandas/core/frame.py

+8-11
Original file line numberDiff line numberDiff line change
@@ -6244,28 +6244,25 @@ def explode(self, column: Union[str, Tuple]) -> "DataFrame":
62446244
if not self.columns.is_unique:
62456245
raise ValueError("columns must be unique")
62466246

6247-
if isinstance(self.index, MultiIndex):
6248-
index_names = [
6249-
"level_{num}".format(num=num) if val is None else val
6250-
for num, val in enumerate(self.index.names)
6251-
]
6252-
else:
6253-
index_names = [i if i else "index" for i in [self.index.name]]
6247+
named_index = any(i for i in self.index.names)
62546248

62556249
column_with_index = self[column].reset_index()
62566250

62576251
result = (
62586252
self.drop([column], axis=1)
62596253
.reset_index()
62606254
.join(column_with_index[column].explode())
6261-
.set_index(index_names)
6262-
.reindex(columns=self.columns, copy=False)
62636255
)
62646256

62656257
if isinstance(self.index, MultiIndex):
6266-
result.index.names = self.index.names
6258+
result.index = pandas.MultiIndex.from_frame(result.iloc[:, :self.index.nlevels])
62676259
else:
6268-
result.index.name = self.index.name
6260+
result.index = result.iloc[:, 0]
6261+
6262+
if not named_index:
6263+
result.index.names = [None]*self.index.nlevels
6264+
6265+
result = result.reindex(columns=self.columns, copy=False)
62696266

62706267
return result
62716268

0 commit comments

Comments
 (0)