【问题标题】:Pandas - Appending data from one Dataframe toPandas - 将数据从一个 Dataframe 附加到
【发布时间】:2019-05-21 16:19:45
【问题描述】:

我有一个数据框(称为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)

【问题讨论】:

  • 到目前为止你尝试了什么?还请发布示例输出。附加在循环中生成的 dfs 见this

标签: pandas dataframe append


【解决方案1】:

我认为您需要将序列传递给concat,显然使用了list

objs:Series、DataFrame 或 Panel 对象的序列或映射

如果传递了一个 dict,则排序后的键将用作键参数,除非它被传递,在这种情况下将选择值(见下文)。任何 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)

【讨论】:

  • 感谢您的帮助。但是我有一个问题。我看到当前日期的时间被添加到与票证相同的列中。我无法向 Dataframe df_master 添加新列..
  • @darkhorse - 我认为 df_masterconcat 不是必需的,只需添加带有日期的列并附加到文件。如果需要所有数据使用df_master = pd.read_csv('file.csv', header=None),请检查已编辑的答案。
  • 我尝试了上述方法,但仍然如此。将时间戳添加为新行而不是列。
  • @darkhorse - 你是对的,需要df_ticket = tickets[['ticket']] instaed df_ticket = tickets['ticket'] 一列DataFrame
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 2015-03-06
  • 1970-01-01
  • 2013-05-11
  • 2018-05-06
  • 2014-05-19
  • 2014-10-02
  • 1970-01-01
相关资源
最近更新 更多