【问题标题】:add a column with update time to data frame将具有更新时间的列添加到数据框
【发布时间】:2026-02-11 06:15:02
【问题描述】:

我是 python 新手,我正在玩 pandas 库。我有一个名为 COMBO 的数据框,它将 5 个不同的 Excel 电子表格组合到一个主电子表格中。我想在最后添加一个新列,显示我合并电子表格的时间和时间,但我很难让它工作。我收到一个错误:TypeError: cannot concatenate a non-NDFrame object。到目前为止,这是我尝试过的:

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 表。

我不确定该方法是否正确,但它不起作用。任何帮助,将不胜感激。

谢谢

【问题讨论】:

    标签: python pandas timestamp concatenation


    【解决方案1】:

    根据您的预期输出,只需添加时间戳列而不创建另一个数据框可能会更简单

    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)
    

    【讨论】:

    • 哇哦。那行得通,而且比我想的要容易。谢谢。
    • @user7146708 不客气,您可能想仔细看看pd.DataFrame.append 方法:) 它不能将str 作为第一个参数,因此timestamp.append(ts) 将不起作用你的情况