我有一个excel文件for(int i = startingNum; i <= endingNum; i++) {
if (!String.valueOf(i).contains("3")) { // Here
counter++;
}
}
,大约有40张foo.xlsx
,sh1
等。每张图纸都有以下格式:
sh2
在每张工作表中,我想重命名格式为area cnt name\nparty1 name\nparty2
blah 9 5 5
word 3 7 5
的变量,只将name\nparty
作为标签。示例输出:
party
我正在阅读文件:
area cnt party1 party2 sheet
bacon 9 5 5 sh1
spam 3 7 5 sh1
eggs 2 18 4 sh2
然后想知道我是否需要这样做:
book = pd.ExcelFile(path)
或类似的东西?
答案 0 :(得分:12)
read_excel
pandas
方法可让您在设置关键字参数sheetname=None
时一次阅读所有工作表。这将返回一个字典 - 键是工作表名称,值是工作表作为数据帧。
使用它,我们可以简单地遍历字典并:
rename
方法重命名我们的列 - 使用lambda
,只要有新行,我们只需通过拆分每个列名称获取列表的最后一个条目。如果没有新行,则列名称保持不变。一旦完成,我们重置索引,一切都应该很好。注意:如果您在一张纸上但不在其他纸张上出现派对,这仍然有效,但会使用NaN
填写每张纸张的任何缺失列。
import pandas as pd
sheets_dict = pd.read_excel('Book1.xlsx', sheetname=None)
full_table = pd.DataFrame()
for name, sheet in sheets_dict.items():
sheet['sheet'] = name
sheet = sheet.rename(columns=lambda x: x.split('\n')[-1])
full_table = full_table.append(sheet)
full_table.reset_index(inplace=True, drop=True)
print full_table
打印:
area cnt party1 party2 sheet
0 bacon 9 5 5 Sheet1
1 spam 3 7 5 Sheet1
2 eggs 2 18 4 Sheet2