Skip to content

Commit 754c48c

Browse files
author
Marco Gorelli
committed
Avoid having to keep track of index names
1 parent 7d459db commit 754c48c

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
@@ -6243,28 +6243,25 @@ def explode(self, column: Union[str, Tuple]) -> "DataFrame":
62436243
if not self.columns.is_unique:
62446244
raise ValueError("columns must be unique")
62456245

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

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

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

62646256
if isinstance(self.index, MultiIndex):
6265-
result.index.names = self.index.names
6257+
result.index = pandas.MultiIndex.from_frame(result.iloc[:, :self.index.nlevels])
62666258
else:
6267-
result.index.name = self.index.name
6259+
result.index = result.iloc[:, 0]
6260+
6261+
if not named_index:
6262+
result.index.names = [None]*self.index.nlevels
6263+
6264+
result = result.reindex(columns=self.columns, copy=False)
62686265

62696266
return result
62706267

0 commit comments

Comments
 (0)