Skip to content

Commit 44fb064

Browse files
author
Marco Gorelli
committed
Avoid having to keep track of index names
1 parent 7ae07bd commit 44fb064

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

6240-
if isinstance(self.index, MultiIndex):
6241-
index_names = [
6242-
"level_{num}".format(num=num) if val is None else val
6243-
for num, val in enumerate(self.index.names)
6244-
]
6245-
else:
6246-
index_names = [i if i else "index" for i in [self.index.name]]
6240+
named_index = any(i for i in self.index.names)
62476241

62486242
column_with_index = self[column].reset_index()
62496243

62506244
result = (
62516245
self.drop([column], axis=1)
62526246
.reset_index()
62536247
.join(column_with_index[column].explode())
6254-
.set_index(index_names)
6255-
.reindex(columns=self.columns, copy=False)
62566248
)
62576249

62586250
if isinstance(self.index, MultiIndex):
6259-
result.index.names = self.index.names
6251+
result.index = pandas.MultiIndex.from_frame(result.iloc[:, :self.index.nlevels])
62606252
else:
6261-
result.index.name = self.index.name
6253+
result.index = result.iloc[:, 0]
6254+
6255+
if not named_index:
6256+
result.index.names = [None]*self.index.nlevels
6257+
6258+
result = result.reindex(columns=self.columns, copy=False)
62626259

62636260
return result
62646261

0 commit comments

Comments
 (0)