gpt4 book ai didi

python - 如何根据最近(或最近)的时间戳合并两个数据帧

转载 作者:行者123 更新时间:2023-11-28 16:28:41 25 4
gpt4 key购买 nike

假设我有一个数据框 df1,其中包含列“A”和“B”。 A 是时间戳列(例如 unixtime),“B”是某个值的列。

假设我还有一个包含“C”和“D”列的数据框 df2。 C 也是一个 unixtime 列,D 是一个包含一些其他值的列。

我想通过 timestamp 上的连接模糊 merge 数据帧。但是,如果时间戳不匹配(它们很可能不匹配),我希望它合并到它可以在“C”中找到的“A”中时间戳之前最近的条目。

pd.merge 不支持这个,我发现自己使用 to_dict() 从数据帧中转换出来,并使用一些迭代来解决这个问题。 pandas 有办法解决这个问题吗?

最佳答案

numpy.searchsorted()(see docs) 上找到合适的 index 位置以merge - 希望以下内容能让您更接近您正在寻找的内容:

start = datetime(2015, 12, 1)
df1 = pd.DataFrame({'A': [start + timedelta(minutes=randrange(60)) for i in range(10)], 'B': [1] * 10}).sort_values('A').reset_index(drop=True)
df2 = pd.DataFrame({'C': [start + timedelta(minutes=randrange(60)) for i in range(10)], 'D': [2] * 10}).sort_values('C').reset_index(drop=True)
df2.index = np.searchsorted(df1.A.values, df2.C.values)
print(pd.merge(left=df1, right=df2, left_index=True, right_index=True, how='left'))

A B C D
0 2015-12-01 00:01:00 1 NaT NaN
1 2015-12-01 00:02:00 1 2015-12-01 00:02:00 2
2 2015-12-01 00:02:00 1 NaT NaN
3 2015-12-01 00:12:00 1 2015-12-01 00:05:00 2
4 2015-12-01 00:16:00 1 2015-12-01 00:14:00 2
4 2015-12-01 00:16:00 1 2015-12-01 00:14:00 2
5 2015-12-01 00:28:00 1 2015-12-01 00:22:00 2
6 2015-12-01 00:30:00 1 NaT NaN
7 2015-12-01 00:39:00 1 2015-12-01 00:31:00 2
7 2015-12-01 00:39:00 1 2015-12-01 00:39:00 2
8 2015-12-01 00:55:00 1 2015-12-01 00:40:00 2
8 2015-12-01 00:55:00 1 2015-12-01 00:46:00 2
8 2015-12-01 00:55:00 1 2015-12-01 00:54:00 2
9 2015-12-01 00:57:00 1 NaT NaN

关于python - 如何根据最近(或最近)的时间戳合并两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com