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