jpk*_*jpk 5 python excel python-3.x pandas
我正在使用一个有五张纸的数据框,我想使用其中的四张。所以我可以加载它:
df = pd.read_excel('***.xls', sheet_name=['a', 'b', 'c', 'd'])
但是现在我想添加一个列,说明每行在哪个工作表中,但我不知道该怎么做。我试过这样的事情
for name, frame in df.items():
frame['Sheet'] = name
df = df.append(frame, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
AttributeError: 'collections.OrderedDict' 对象没有属性 'append'
任何帮助将不胜感激。先感谢您!
假设这是我连接工作表后我的数据的样子:
df = pd.concat(pd.read_excel(***.xls, sheet_name=['a', 'b', 'c', 'd'],
header=1), ignore_index=True, sort=False)
Run Code Online (Sandbox Code Playgroud)
我的目标是添加一列,说明每行来自哪个工作表,就像这样......
希望这可以帮助您了解我想要做什么。
(编辑)如果我想使用数据框中的所有工作表,但不想列出每个工作表的单独名称,我也想知道如何执行此操作。谢谢!
IIUC,尝试DataFrame.assign在list comprehension:
sheets = ['a', 'b', 'c', 'd']
df = pd.concat([pd.read_excel('***.xls', sheet_name=s)
.assign(sheet_name=s) for s in sheets])
Run Code Online (Sandbox Code Playgroud)
如果要使用所有工作表并分配一列工作表名称,您可以执行以下操作:
workbook = pd.ExcelFile('***.xls')
sheets = workbook.sheet_names
df = pd.concat([pd.read_excel(workbook, sheet_name=s)
.assign(sheet_name=s) for s in sheets])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |