2017-01-20 2 views
1

Я являюсь модератором newB python и в настоящее время испытываю некоторые проблемы с линией кода, которая может быть очень простой для многих из вас.Python строка и столбец данных

Я использую python 2.7 и успешно использовал xlwings для копирования именованного диапазона из внешней книги в формат pd.dataframe. Все работает отлично, за исключением df.index и df.columns. В настоящее время код присваивает номерам от 1 до n (по числу строк и столбцов) имена индексов и столбцов.

Есть ли способ, я использую первые значения столбца моих импортированных данных как df.index и first row как df.column?

Может кто-то пожалуйста помочь мне с получением что-то вроде этого:

df = pd.DataFrame(myExcelRange, df.index = 'first column values', df.columns = 'first row values') 

Форма и название myExcelRange может отличаться каждый раз.

Любые рекомендации будут высоко оценены.

Пример:

> myExcelRange

ITEM Dan Jane Fan 
A 77 78 40 
B 89 53 72 
C 20 19 79 
D 81 54 93 
E 77 76 99 

панды возвращается

0 1 2 3 
0 ITEM Dan Jane Fan 
1 77 78 40 0 
2 89 53 72 0 
3 20 19 79 0 
4 81 54 93 0 
5 77 76 99 0 

желаемого

ITEM Dan Jane Fan 
A 76 89 100 
B 59 72 24 
C 69 73 19 
D 70 92 43 
E 65 94 30 
+0

что такое 'type (myExcelRange)'? – jezrael

+0

это тип 'list' –

+0

Можете ли вы добавить образец, например 'myExcelRange = ['a', 'b', 'c']' или 'myExcelRange = [['a', 'b', 'c'], ['d', 'e', ​​'f']] 'и желаемый результат? – jezrael

ответ

0

Вы можете set_index с первого столбца, а затем выберите первый ряд iloc и назначить df.columns, последний удалить первую строку из данных по iloc тоже:

myExcelRange = [['a','b','c'],['d','e','f'],['g','h','i']] 
df = pd.DataFrame(myExcelRange) 
print (df) 
    0 1 2 
0 a b c 
1 d e f 
2 g h i 

df = df.set_index(0) 
df.columns = df.iloc[0,:] 
#for nicer df remove index and column names 
df.index.name = None 
df.columns.name = None 

print (df.iloc[1:,:]) 
    b c 
d e f 
g h i 

Как Alex Fung упоминалось, может быть, возможно использование read_excel с параметр index_col:

df = pd.read_excel('file.xlsx', index_col=0) 
print (df) 
     Dan Jane Fan 
ITEM     
A  77 78 40 
B  89 53 72 
C  20 19 79 
D  81 54 93 
+0

он печатает первую строку дважды сейчас - один как заголовок и второй как данные –

+0

Что-то не так? – jezrael

+0

Улыбки J и Alex, я не использовал это раньше. Но сейчас я пойду. –

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