我通过传递坐标(开始和结束)从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)
答案 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)