2016-07-01 7 views
3

После использования транспонирования на dataframe всегда есть дополнительные строки как остаток от индекса начальной dataframe для примера:Как удалить лишнюю строку (или столбец) после транспонирования() в панд

import pandas as pd 

df = pd.DataFrame({'fruit':['apple','banana'],'number':[3,5]}) 
df 
    fruit number 
0 apple  3 
1 banana  5 
df.transpose() 
     0  1 
fruit apple banana 
number  3  5 

Даже когда я не имею индекса:

df.reset_index(drop = True, inplace = True) 
df 
    fruit number 
0 apple  3 
1 banana  5 

df.transpose() 
     0  1 
fruit apple banana 
number  3  5 

проблема заключается в том, что, когда я сохранить dataframe в файл CSV с помощью:

df.to_csv(f) 

этот дополнительный ряд остается наверху, и я должен удалить его вручную каждый раз.

Кроме того, это не работает:

df.to_csv(f, index = None) 

, потому что старый индекс больше не считается индекс (только другой строки ...).

Это также произошло, когда я перенес другой путь, и я получил дополнительную колонку, которую я не мог удалить.

Любые советы?

+2

'печати df.T.to_csv (заголовок = None) или' печать df.to_csv (индекс = None) 'и работа для меня , – piRSquared

+0

О, спасибо, я не понял, что это был заголовок. Решением, которое работало в моем случае, является 'df.T.to_csv (f, header = None)', предполагая, что df является исходным фреймворком данных (я хочу транспонировать). Кроме того, я не понимаю, почему вы печатаете 'print'? –

+1

В Dataframes всегда должны быть индексы и заголовки в Pandas, поэтому, если вы не поставляете их, они просто дают вам целые числа. Когда вы переносите его, вы просто меняете размеры индекса и заголовка. – Jeff

ответ

0

Вместо удаления дополнительного индекса, почему бы не попробовать установить новый индекс, а затем использовать нарезку?

шаг 1: Установите новый индекс вы хотите:
df.columns = df.iloc[0]
шаг 2: Создайте новый dataframe извлекая дополнительную строку.
df_new = df[1:]

1

У меня была такая же проблема, я решил ее переустановку индекс, прежде чем делать transpose. Я имею в виду df.set_index('fruit').transpose():

import pandas as pd 

df = pd.DataFrame({'fruit':['apple','banana'],'number':[3,5]}) 
df 
    fruit number 
0 apple 3 
1 banana 5 

И df.set_index('fruit').transpose() дает:

fruit apple banana 
number 3  5 
Смежные вопросы