我有一个数据框(称为df
),其中包含在给定日期工作的票证列表。我有一个脚本,每天都会运行一个生成该df的脚本,我希望有一个新的主数据框(让我们说df_master
),它将新的df值附加到新的数据框上。因此,无论何时我查看df_master,我都应该能够看到所有票证在多天内都可以使用。还希望df_master中有一个新列,显示插入行的日期。
以下是df的外观:
1001
1002
1003
1004
我尝试执行concat
,但抛出错误
TypeError: first argument must be an iterable of pandas objects, you passed an object of type "Series"
更新
df_ticket = tickets['ticket']
df_master = df_ticket
df_master['Date'] = pd.Timestamp('now').normalize()
L = [df_master,tickets]
master_df = pd.concat(L)
master_df.to_csv('file.csv', mode='a', header=False, index=False)
答案 0 :(得分:2)
我认为您需要向concat
传递序列,显然使用了list
:
objs :Series,DataFrame或Panel对象的序列或映射
如果传递了dict,则排序的键将用作keys参数,除非传递该键,否则将选择值(请参见下文)。除非所有对象都为None,否则所有None对象都将被静默删除,在这种情况下将引发ValueError
L = [s1,s2]
df = pd.concat(L)
似乎您只通过了Series
,所以引发了错误:
df = pd.concat(s)
对于插入日期,可以设置pd.Timestamp('now').normalize()
,对于主df,我建议创建一个文件并每天追加DataFrame:
df_ticket = tickets[['ticket']]
df_ticket['Date'] = pd.Timestamp('now').normalize()
df_ticket.to_csv('file.csv', mode='a', header=False, index=False)
df_master = pd.read_csv('file.csv', header=None)