簡體   English   中英

參考其他值從 pandas dataframe 中提取值

[英]extracting value from pandas dataframe in reference to other values

我有一個 dataframe:

d= {'page_number':[0,0,0,0,0,0,1,1,1,1], 'text':[aa,ii,cc,dd,ee,ff,gg,hh,ii,jj]}
df = pd.DataFrame(data=d)
df
 
   page_number   text
0     0           aa
1     0           ii
2     0           cc
3     0           dd
4     0           ee
5     0           ff
6     1           gg
7     1           hh
8     1           ii
9     1           jj

我想找出'gg'出現的page_numer,現在在同一個page_number上可以有許多不同的子字符串,但我有興趣提取'ii'出現在'gg'的同一page_number上的行號(不是有興趣獲得其他“ii”子串出現的結果)

idx=np.where(df['text'].str.contains(r'gg', na=True))[0][0]

在這里不一定有幫助,因為它檢索“gg”的行號而不是它的“page_number”。

非常感謝

你首先只留下'ii'和'gg'外觀:

df = df[df['text'].isin(['ii', 'gg'])

然后通過 groupby 頁碼,我們可以假設當我們得到 2 時,它們在同一頁上:

df2 = df.groupby('page_number').count()
df2[df2['text'] == 2]

您可以使用 pandas 根據另一個列值檢索列值。 我希望這將檢索您正在尋找的東西。 df[df['text']=='gg']['page_number']

如果您在任何頁面上有多個 'gg' 和 'ii':

這將返回 boolean 系列:

df = df.groupby(by='page_number').agg(lambda x: True if 'gg' in x.values 
                                      and 'ii' in x.values else False)

這將為您提供頁數

df[df.text].index

暫無
暫無

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

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