Python数据帧行和列

时间:2017-01-20 05:38:51

标签: python python-2.7 pandas dataframe header

我是一名newB 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  

pandas正在返回

    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  

1 个答案:

答案 0 :(得分: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 ,也许可以使用带有参数index_col的{​​{3}}:

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