python - 添加日期匹配的列表元素 (Python)

标签 python datetime pandas

我有 2 个列表:

vals = [1,2,3,4]
dates = [t1, t2, t3, t4]

其中日期采用 Python 的日期时间格式。

然后,给定另一组列表:

vals_2 = [1, 1, 2, 2]
dates_2 = [t5,t6,t7,t8]

可能是t6 = t1

现在,我想在日期匹配的地方添加 valsvals_2(所以添加 vals[i]vals_2 [j] 如果 dates[i] == dates_2[j]).

我想要一个有效的解决方案。

到目前为止我的想法: 将 vals 放入 Pandas 数据框中,然后将 vals_2 放入单独的数据框中,然后将两者合并到日期键上?

问题:这是一个好(/最好)的主意吗?考虑到日期时间格式等,我不确定如何处理这个问题,因此将不胜感激一些关于如何开始的指示

谢谢

最佳答案

按照您的建议:

import datetime as dt

vals = [1, 2, 3, 4]
dates = [dt.date(2016,1,n) for n in range(1, 5)]
vals_2 = [1, 1, 2, 2]
dates_2 = [dt.date(2016,1,n) for n in range(3, 7)]

df1 = pd.DataFrame({'date': dates, 'vals': vals})
df2 = pd.DataFrame({'date': dates_2, 'vals': vals_2})

>>> df1.merge(df2, on='date', suffixes=['_1', '_2'])

         date  vals_1  vals_2
0  2016-01-03       3       1
1  2016-01-04       4       1

你也可以将日期转换成时间戳,然后进行比较,这样应该会稍微快一些:

df1['date'] = pd.to_datetime(df1.date)
df2['date'] = pd.to_datetime(df2.date)

40k 条记录的计时

使用日期时间对象的 Pandas。

%timeit df1.merge(df2, on='date', suffixes=['_1', '_2'])
1 loops, best of 3: 10.2 s per loop

使用时间戳的 Pandas。

%timeit df1.merge(df2, on='date', suffixes=['_1', '_2'])
1 loops, best of 3: 9.1 s per loop

关于python - 添加日期匹配的列表元素 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36697373/

相关文章:

c# - 在 C# 中管理时间序列

c++ - C++ 当前日期和时间的自定义格式

python - 在 python 中创建包装类时,如何让父类(super class)的方法返回包装类的实例

python - 重新运行脚本后数据框和列表返回空

python -/accounts/sign_up/create() 处的 TypeError 需要 1 个位置参数,但给出了 2 个

python - 如何从Python列表中删除所有出现的元素?

Javascript 日期 UTC 问题

python - 没有错误 : But its not indexing faces and not generating the face id's

python - 如何根据示例数据框的 created_time 列的日期和时间条件获取记录

python - 如何在 Pandas 中创建新列,并有条件重复另一列的值?