Skip to content
Advertisement

count list values that appears in dataFrame using python

I want to count list value that is exists in dataframe:

I want to use a loop to go through list values and dataframe df and if list[0] exist in df count++.

my code: df = pd.read_excel(‘C:UsersmaDesktopfilee’) df looks like this :

Intents Examples
First something
Second something

listX= [“HOFF”, “Customers”, “bank”]

I did this but not working:

count = 0
for i in listX[0]:
for x in df['Examples']:
    if x.str.contains(i):
       count++

Advertisement

Answer

Firstly, welcome to StackOverflow. Check the guidelines for how to properly ask a question (there is no question in your post). I think I understand what you want though.

In general, you don’t want to use loops with pandas. Its not the way the API was intended to be used. You would probably want to use pandas lambda functions since they are easy to understand and will get you started on the right path. The following will check to see if items in ListX match the items in the Example column. Keep in mind, I am assuming the datatype of the Example column is a list and not a string.

listX= ["HOFF", "Customers", "bank"]

# define the function that will give you the desired output
def count_items(examples):
    matching_items = [examples.index(x) for x in listX]
    return len(matching_items)

# then execute the function you defined with a lambda expression
# you pass in the values you wish to pass into the function
# axis = 1 means you want to loop over rows not columns
df['Count'] = df.apply(lambda x: count_items(x["Examples"]), axis = 1)

If you need to split the string value of the example column to a list, use the .split() function:

s = '1,2,3'
list = s.split(',')
print(list)    # prints ['1', '2', '3']

You can add this logic into your count_items function, before matching the items. This way the value is in the correct datatype (list)

Advertisement