我是python的新手,我正在玩pandas库。我有一个名为COMBO的数据框,它将5个不同的Excel电子表格组合到一个主电子表格中。我想在最后添加一个新列,显示我何时以及何时合并电子表格,但我很难让它发挥作用。我收到一个错误:TypeError:无法连接非NDFrame对象。这是我到目前为止所尝试的:
import pandas as pd
import datetime
df1= pd.read_excel(r'W:\sheets\sh1.xlsx')
df2= pd.read_excel(r'W:\sheets\sh2.xlsx')
df3= pd.read_excel(r'W:\sheets\sh3.xlsx')
df4= pd.read_excel(r'W:\sheets\sh4.xlsx')
df5= pd.read_excel(r'W:\sheets\sh5.xlsx')
df6= pd.read_excel(r'W:\sheets\sh6.xlsx')
combo = pd.concat([df1,df2,df3,df4,df5,df6])
now = datetime.datetime.now() #defines NOW
ts = str(now) #converts it into string
timestamp = pd.DataFrame([]) #opens an empty dataframe
for row in combo.iterrows():
timestamp.append(ts)
master = pd.concat([combo,timestamp],axis=1)
master.to_excel(r'W:\sheets\mastersheet.xlsx',index = False)
基本上,我首先连接工作表,然后获取日期和时间,然后创建一个名为TIMESTAMP的新数据框。然后,对于COMBO中的每一行,我将日期和时间附加到空数据帧TIMESTAMP(这样我最终会得到一个与COMBO中的行数相同的列,所有行都具有相同的时间戳)。最后,我将TIMESTAMP连接到COMBO以生成MASTER表。
我不确定该方法是否正确,但它不起作用。任何帮助,将不胜感激。
感谢
答案 0 :(得分:0)
根据您的预期输出,只添加时间戳列而不创建另一个数据帧可能更简单
combo = pd.concat(pd.read_excel(r'W:\sheets\sh%d.xlsx' % i) for i in range(1, 7))
combo['timestamp'] = str(datetime.datetime.now())
combo.to_excel(r'W:\sheets\mastersheet.xlsx', index=False)