我有一个带有“时间”和“A”列的熊猫数据框。对于每一行,df["Time"] 是一个整数时间戳,df["A"] 是一个浮点数。我想创建一个新列“B”,其值为 df[“A”],但该列发生在未来五秒或之前五秒。我可以迭代地这样做:
for i in df.index:
df["B"][i] = df["A"][max(df[df["Time"] <= df["Time"][i]+5].index)]
但是,df 有数万条记录,所以这需要很长时间,而且我需要运行几百次,所以我的解决方案并不是一个真正的选择。我对 pandas 有点陌生(对一般编程来说只是不太新),所以我不确定 pandas 是否有明显的解决方案。
如果我有一种方法可以在创建列时引用每行中 df["Time"] 的特定值,那将有所帮助,因此我可以执行以下操作:
df["B"] = df["A"][max(df[df["Time"] <= df["Time"][corresponding_row]+5].index)]
谢谢。
编辑:这是我的目标的一个例子。如果数据框如下:
Time A
0 0
1 1
4 2
7 3
8 4
10 5
12 6
15 7
18 8
20 9
那么我希望结果是:
Time A B
0 0 2
1 1 2
4 2 4
7 3 6
8 4 6
10 5 7
12 6 7
15 7 9
18 8 9
20 9 9
其中 B 中的每一行都来自 Time 最多为 5 的行中 A 的值。因此,如果 Time 也是索引,则 df["B"][0] = df["A"][4 ] 因为 4 是最大时间,最多 5 大于 0。在代码中,4 = max(df["Time"][df["Time"] <= 0+5],这就是为什么 df["B "][0] 是 df["A"][4]。