1

This question is with this history: Link

Here is a json format table:

ID Title
19 I am doing great
25 [Must fix problem] Stomach not well
31 [Not-so-urgent] Wash cloths
498 [VERY URGENT] Pay your rent
517 Landlord wants you to pay your rent tomorrow
918 Girlfriend wants to help you to pay rent if you take her out
1000 [Always reproducible issue] Room partner dont want to pay any rent, he is out of cash

I did this

In: selected_row_title = df.loc[df['id'] == 4]["title"]

Output:

[VERY URGENT] Pay your rent

Now, by using Python Pandas, I am trying to write a function as:

get_matching_rows(selected_row_title )

Output

ID 498 has pay your rent 
ID 517 has pay your rent
ID 918 has pay rent
ID 1000 has pay rent

I have been tearing my hair out on this and I really need some help, atleast a guidance on how once can implement this. Appreciate any inputs.

Community
  • 1
  • 1
yogi_peace
  • 111
  • 2
  • 5
  • 1
    Am I right to assume that you want to select all the rows that have "pay rent" in "Title" column? The description seems little bit unclear to me. – Vedang Mehta May 24 '16 at 10:54
  • yes, select all rows that have 'pay rent' common in 'title'. thanks for your help. – yogi_peace May 24 '16 at 12:02

1 Answers1

1

I think you can use str.replace with str.contains:

s = "[VERY URGENT] Pay your rent"

#replace all [] in column title
tit = df.Title.str.replace(r'[\[\]]', '')
print (tit)

0                                     I am doing great
1                    Must fix problem Stomach not well
2                            Not-so-urgent Wash cloths
3                            VERY URGENT Pay your rent
4         Landlord wants you to pay your rent tomorrow
5    Girlfriend wants to help you to pay rent if yo...
6    Always reproducible issue Room partner dont wa...
Name: Title, dtype: object

#search one of word of string s (logical or is |)
mask = tit.str.contains(s.replace(' ', '|'))
print (mask)
0    False
1    False
2     True
3     True
4     True
5     True
6     True
Name: Title, dtype: bool
#select all ID by condition
selected_row_title = df.loc[mask, 'ID']
print (selected_row_title)
2      31
3     498
4     517
5     918
6    1000
Name: ID, dtype: int64
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252