Skip to content

Commit 6247c8c

Browse files
committed
BUG: index name in to_records #2161
1 parent 2086ae2 commit 6247c8c

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

pandas/core/frame.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -923,7 +923,16 @@ def to_records(self, index=True):
923923
if index:
924924
arrays = [self.index.values] + [self[c].values
925925
for c in self.columns]
926-
names = ['index'] + list(map(str, self.columns))
926+
count = 0
927+
index_names = self.index.names
928+
if isinstance(self.index, MultiIndex):
929+
for i, n in enumerate(index_names):
930+
if n is None:
931+
index_names[i] = 'level_%d' % count
932+
count += 1
933+
elif index_names[0] is None:
934+
index_names = ['index']
935+
names = index_names + list(map(str, self.columns))
927936
else:
928937
arrays = [self[c].values for c in self.columns]
929938
names = list(map(str, self.columns))

pandas/tests/test_frame.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2572,6 +2572,21 @@ def test_to_records_floats(self):
25722572
df = DataFrame(np.random.rand(10,10))
25732573
df.to_records()
25742574

2575+
def test_to_recods_index_name(self):
2576+
df = DataFrame(np.random.randn(3, 3))
2577+
df.index.name = 'X'
2578+
rs = df.to_records()
2579+
self.assert_('X' in rs.dtype.fields)
2580+
2581+
df = DataFrame(np.random.randn(3, 3))
2582+
rs = df.to_records()
2583+
self.assert_('index' in rs.dtype.fields)
2584+
2585+
df.index = MultiIndex.from_tuples([('a', 'x'), ('a', 'y'), ('b', 'z')])
2586+
df.index.names = ['A', None]
2587+
rs = df.to_records()
2588+
self.assert_('level_0' in rs.dtype.fields)
2589+
25752590
def test_join_str_datetime(self):
25762591
str_dates = ['20120209' , '20120222']
25772592
dt_dates = [datetime(2012,2,9), datetime(2012,2,22)]

0 commit comments

Comments
 (0)