gpt4 book ai didi

python - 在 pandas DataFrame 中查找条件连续值

转载 作者:行者123 更新时间:2023-12-04 04:10:57 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中包含多行和多列,其中填充了类型和值。都是字符串。我想写一个条件函数:1) 我搜索哪种类型(第 1 列)2) 第一个值(第 2 列)3) 第二个连续值(在第 2 列的下一行)

我设法编写了一个函数来搜索一种类型的一个值,如下所示,但是如何添加第二种类型?我认为这可能需要 df.shift(axis=0) 的帮助,但我不知道如何将该命令与条件搜索相结合。

import pandas as pd

d = {'type': ['wordclass', 'wordclass', 'wordclass', 'wordclass', 'wordclass', 'wordclass',
'english', 'english', 'english', 'english', 'english', 'english'],
'values': ['dem', 'noun', 'cop', 'det', 'dem', 'noun', 'this', 'tree', 'is', 'a', 'good', 'tree']}
df = pd.DataFrame(data=d)
print(df)

tiername = 'wordclass'
v1 = 'dem'
v2 = 'noun'

def search_single_tier(tiername, v1):
searchoutput = df[df['type'].str.contains(tiername) & df['values'].str.match(v1)]
return searchoutput

x = search_single_tier(tiername, v1)
print(x)```

最佳答案

您不需要为此创建函数。相反,试试这个:

In [422]: tiername = 'wordclass'                                                                                                                                                                            

## This equates `type` columns to `tiername`.
## `.iloc[0:2]` gets the first 2 rows for the matched condition

In [423]: df[df.type.eq(tiername)].iloc[0:2]
Out[423]:
type values
0 wordclass dem
1 wordclass noun

Op 评论后:

Find all consecutive rows like this:
tiername = 'wordclass'
v1 = 'dem'

In [455]: ix_list = df[df.type.eq(tiername) & df['values'].eq(v1)].index.tolist()

In [464]: pd.concat([df.iloc[ix_list[0]: ix_list[0]+2], df.iloc[ix_list[1]: ix_list[1]+2]])
Out[464]:
type values
0 wordclass dem
1 wordclass noun
4 wordclass dem
5 wordclass noun

关于python - 在 pandas DataFrame 中查找条件连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61748234/

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