2015-05-09 3 views
0

После поворота DataFrame в столбце возвращаемый DataFrame имеет имя этого столбца в верхнем левом углу (см. Ниже, где df2 имеет «b» в верхней левой ячейке таблицы).Pandas DataFrame Имя после pivot

Вопрос: Как можно получить это имя прямо или изменить?

Я мог бы переименовать столбец b, прежде чем выполнять поворот или развернуть шарнир, переименовать столбец и снова стек. Тем не менее, я ищу простой атрибут, который я, похоже, не могу найти.

Можно было бы подумать, что df2.name вернет это значение, но это приведет к: AttributeError: 'DataFrame' object has no attribute 'name'. Кроме того, df2.info() также не показывает ничего полезного.

df = pd.DataFrame({'a': ['A', 'A', 'B', 'B'], 'b': ['C', 'D', 'C', 'D'], 'val': [1, 2, 3, 4]}) 
df2 = df.pivot(index='a', columns='b', values='val') 
>>> df2 
b C D 
a  
A 1 2 
B 3 4 

>>> df2.info() 
<class 'pandas.core.frame.DataFrame'> 
Index: 2 entries, A to B 
Data columns (total 2 columns): 
C 2 non-null int64 
D 2 non-null int64 
dtypes: int64(2) 

ответ

1

df2.columns и df2.index имеют отверждаемый name атрибут:

In [65]: df2 
Out[65]: 
b C D 
a  
A 1 2 
B 3 4 

In [66]: df2.columns.name = 'foo' 

In [67]: df2.index.name = 'bar' 

In [68]: df2 
Out[68]: 
foo C D 
bar  
A 1 2 
B 3 4 

столбцы и строки индексы также имеют (множественное число) атрибут names, что особенно полезно, когда индексы мультииндексные. Каждый атрибут names - это FrozenList, элементы которого соответствуют именам для каждого уровня MultiIndex. Вы также можете использовать его для установки одноуровневых имен индексов:

In [70]: df2.columns.names = ['baz'] 

In [72]: df2.index.names = ['qux'] 

In [73]: df2 
Out[73]: 
baz C D 
qux  
A 1 2 
B 3 4 
+0

Я знал, что индекс имеет атрибут имени, но не знал, что столбцы также сделали. Благодарю. – Alexander

Смежные вопросы