簡體   English   中英

在 pandas DataFrame 中查找條件連續值

[英]Finding conditioned consecutive values in a pandas DataFrame

我有一個 pandas dataframe 有多個行和列填充類型和值。 都是字符串。 我想寫一個 function 條件:1)我搜索的類型(第 1 列)2)第一個值(第 2 列)3)第二個連續值(在第 2 列的下一行)

我設法編寫了一個 function 來搜索一種類型的值,如下所示,但是如何添加第二種類型? 我認為這可能是在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)```

您無需為此創建 function。 相反,試試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM