2017-01-20 176 views
1

我是一個newB python建模器,目前遇到了一些代碼行,這可能對很多人都很基本。Python數據幀行和列

我正在使用python 2.7並已成功使用xlwings將外部工作簿中的命名範圍複製到pd.dataframe格式。除了df.index和df.columns之外,所有東西都可以正常工作。目前,代碼將1到n(基於行數和列數)分配爲索引和列名。

有沒有辦法,我使用我導入的數據的第一列值作爲df.index和第一行作爲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

這是一個'列表'類型 –

+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,我以前沒有用過。但我現在已經明白了。 –