在循环内修改并附加pandas数据帧

时间:2017-12-12 07:17:57

标签: python pandas csv dataframe

我有~40个csv文件,这些文件是一段时间在线房地产列表的快照。我试图将这些合并到一个csv文件中,同时指定何时发布房地产列表以及何时删除它们(即如果列表是新的,则将其添加到csv文件的末尾,如果它在更新“最后见过”列之前存在最新日期 - 同时保留其在单独列中发布的日期。)

我有两件事我想请求帮助:

1)我写的循环只看到“初始”ID并且不搜索“新添加”列表以更新其“上次看到”日期(即在列表不在初始批次中之后,它们是所有被视为“新”的人,即使他们在之前的csv文件中添加到统一主数据库中) - 如何更新数据帧,以便在每个循环中将新的csv文件与最新的主数据帧进行比较?

2)看起来我的代码效率很低,因为需要大约20分钟才能完成 - 我可以提高效率吗?

到目前为止我的代码:

{{1}}

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题是正确的,你可以在井数据框中读作一个,然后使用transform找到对应于每个哈希的最后一个日期,然后删除重复的哈希并保留第一个条目。

df = pd.concat([
    pd.read_csv("real_estate(" + date.strftime("%d-%m-%Y") + ").csv")
    for date in daterange(start_date, end_date)
    ])

df = df.sort_values('date')
df['last_seen'] = df.groupby('hash_id')['date'].transform('last')
df = df.drop_duplicates(subset='hash_id', keep='first')