gpt4 book ai didi

python - 在数据框行中查找值 - 创建新列突出显示下一行匹配项

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:20 24 4
gpt4 key购买 nike

我正在尝试在 Pandas 数据框行中查找一个值,并创建一个新列以突出显示下一行是否匹配。所以对于下面的例子:

rng = pd.DataFrame( {'test_1': ['A', 'A','A', 'A', 'B','B', 'A' , 'A', 'A', 'A','A' , 'A', 'A', 'A',]},  index = pd.date_range('4/2/2014', periods=14, freq='BH'))
reg

行 == B 在 2014-04-02 13:00:00 和 2014-04-02 14:00:00 所以有一个匹配项:

    test_1
2014-04-02 09:00:00 A
2014-04-02 10:00:00 A
2014-04-02 11:00:00 A
2014-04-02 12:00:00 A
2014-04-02 13:00:00 B
2014-04-02 14:00:00 B
2014-04-02 15:00:00 A
2014-04-02 16:00:00 A
2014-04-03 09:00:00 A
2014-04-03 10:00:00 A
2014-04-03 11:00:00 C
2014-04-03 12:00:00 A
2014-04-03 13:00:00 D
2014-04-03 14:00:00 D

所以新的列应该如下:

B_Matches
2014-04-02 09:00:00 0
2014-04-02 10:00:00 0
2014-04-02 11:00:00 0
2014-04-02 12:00:00 0
2014-04-02 13:00:00 0
2014-04-02 14:00:00 1
2014-04-02 15:00:00 0
2014-04-02 16:00:00 0
2014-04-03 09:00:00 0
2014-04-03 10:00:00 0
2014-04-03 11:00:00 0
2014-04-03 12:00:00 0
2014-04-03 13:00:00 0
2014-04-03 14:00:00 0

然后我将在其他专栏中为 C、D 等做同样的事情。我基本上是在尝试查找出现特定条件且下一个时间段相同的时间,我将在此列上执行 count() 以查看下一个时间段匹配的频率。还请展示任何其他执行此操作的方法。

感谢您的帮助。

最佳答案

你可以定义一个 func 来获取你的值并返回是否有任何行满足你的条件,这将适用于你传递的任何值,然后将 bool 系列转换为 int 所以它转换 TrueFalse 分别为 10:

In [220]:
def func(val):
return ((rng['test_1'] == val) & (rng['test_1'].shift() == val)).astype(int)

func('B')

Out[220]:
2014-04-02 09:00:00 0
2014-04-02 10:00:00 0
2014-04-02 11:00:00 0
2014-04-02 12:00:00 0
2014-04-02 13:00:00 0
2014-04-02 14:00:00 1
2014-04-02 15:00:00 0
2014-04-02 16:00:00 0
2014-04-03 09:00:00 0
2014-04-03 10:00:00 0
2014-04-03 11:00:00 0
2014-04-03 12:00:00 0
2014-04-03 13:00:00 0
2014-04-03 14:00:00 0
Freq: BH, Name: test_1, dtype: int32

In [222]:
func('A')

Out[222]:
2014-04-02 09:00:00 0
2014-04-02 10:00:00 1
2014-04-02 11:00:00 1
2014-04-02 12:00:00 1
2014-04-02 13:00:00 0
2014-04-02 14:00:00 0
2014-04-02 15:00:00 0
2014-04-02 16:00:00 1
2014-04-03 09:00:00 1
2014-04-03 10:00:00 1
2014-04-03 11:00:00 1
2014-04-03 12:00:00 1
2014-04-03 13:00:00 1
2014-04-03 14:00:00 1
Freq: BH, Name: test_1, dtype: int32

关于python - 在数据框行中查找值 - 创建新列突出显示下一行匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38239617/

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