从数据框中删除列索引

时间:2018-07-02 13:37:23

标签: python pandas

我通过传递坐标(开始和结束)从excel工作表中提取了多个数据框 现在我根据坐标使用了下面的功能进行挖掘,但是当我尝试 将其转换为数据帧,不确定在df中列从何处来 我想删除这些索引并将第二行作为列,这是我的数据框

         0     1     2    3     4    5     6
  Cols/Rows    A    A2    B    B2    C    C2
0         A   50    50   150    150  200   200
1         B  200    200  250    300  300   300
2         C  350    500  400    400  450   450

def extract_dataframes(sheet):                         
    ws = sheet['pivots']
    cordinates = [('A1', 'M8'), ('A10', 'Q17'), ('A19', 'M34'), ('A36', 'Q51')]
    multi_dfs_list = []
    for i in cordinates:
        data_rows = []
        for row in ws[i[0]:i[1]]:
            data_cols = []
            for cell in row:
                data_cols.append(cell.value)
            data_rows.append(data_cols)
        multi_dfs_list.append(data_rows)
    multi_dfs = {i: pd.DataFrame(df) for i, df in enumerate(multi_dfs_list)}
    return multi_dfs

我试图删除索引,但是不起作用。 注意:当我说

>>> multi_dfs[0].columns # first dataframe
RangeIndex(start=0, stop=13, step=1)

2 个答案:

答案 0 :(得分:2)

更改

multi_dfs = {i: pd.DataFrame(df) for i, df in enumerate(multi_dfs_list)}

multi_dfs = {i: pd.DataFrame(df[1:], columns=df[0]) for i, df in enumerate(multi_dfs_list)}

Docs

  

列:索引或类似数组的列   用于结果框架的列标签。 如果未提供列标签,则默认为RangeIndex(0、1、2,...,n)

答案 1 :(得分:1)

我认为需要:

df = pd.read_excel(file, skiprows=1)