我正在使用具有五张工作表的数据帧,我想使用其中的四张。所以我可以加载它:
< code>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)
但是我收到了以下错误:
AttributeError:“个集合。OrderedDict“对象没有属性”append“
任何帮助都将不胜感激。提前感谢!
假设这是我连接工作表后的数据的样子:
df = pd.concat(pd.read_excel(***.xls, sheet_name=['a', 'b', 'c', 'd'],
header=1), ignore_index=True, sort=False)
串联数据
我的目标是添加一列,说明每行来自哪个工作表,就像这样......
使用工作表名称行连接数据
希望这能帮助你理解我想做什么。
(编辑)我还想知道,如果我想使用一个数据框架中的所有工作表,但不想列出每个工作表的单独名称,该如何操作。谢谢!
IIUC,尝试DataFrame.assign
中的列表理解
:
sheets = ['a', 'b', 'c', 'd']
df = pd.concat([pd.read_excel('***.xls', sheet_name=s)
.assign(sheet_name=s) for s in sheets])
如果要使用所有图纸并指定一列图纸名称,可以执行以下操作:
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])
如果在read_excel
方法中指定sheet_name
,则将返回type对象。并且
ordered_dict
对象没有附加
函数。你可以试试这个,
import pandas as pd
data = pd.read_excel('***.xls', sheet_name=['a', 'b', 'c', 'd'])
df = pd.DataFrame()
for name, frame in data.items():
frame['sheet'] = name
df = df.append(frame)
print(df)