Q:

Check for each row in several columns and append for each row if the requirement is met or not. python

I have the following example of my dataframe:
df = pd.DataFrame({'first_date': ['01-07-2017', '01-07-2017', '01-08-2017'], 
                   'end_date': ['01-08-2017', '01-08-2017', '15-08-2017'],
                   'second_date': ['01-09-2017', '01-08-2017', '15-07-2017'], 
                   'cust_num': [1, 2, 1],
                   'Title': ['philips', 'samsung', 'philips']})

If the cus_num is equal in the column 
The Title is equal for both rows in the dataframe
The second_date in a row <= end_date in an other row

If all these requirements are met the value True should be appended to a new column in the original row. 
Because I'm working with a big dataset I'm looking for an efficient way to do this. 
In this case only the first record should get a true value. 
I have checked for the apply with lambda and groupby function in python but couldnt find a way to make these work. 

A:

Try this (spontaneously I cannot come up with a faster method):
import pandas as pd
import numpy as np

df["second_date"]=pd.to_datetime(df["second_date"], format='%d-%m-%Y')
df["end_date"]=pd.to_datetime(df["end_date"], format='%d-%m-%Y')

df["new col"] = False

for cust in set(df["cust_num"]):
indices = df.index[df["cust_num"] == cust].tolist()
if len(indices) > 1:
    sub_df = df.loc[indices]
    for title in set(df.loc[indices]["Title"]):            
        indices_title = sub_df.index[sub_df["Title"] == title]
        if len(indices_title) > 1:            
            for i in indices_title:
                if sub_df.loc[indices_title]["second_date"][i] <= sub_df.loc[indices_title]["end_date"][i]:
                    df["new col"] = True
                    break

df["new_col"] = new_col 

First you need to make all date columns comparable with eachother by casting them into datetime. Then create the additional column you want.
Now create a set of all unique customer numbers and iterate through them. For each customer number get a list of all row indices with this customer number. If this list is longer than 1, then you have several same customer numbers. Then you create a sub df of your dataframe with all rows with the same customer number. Then iterate through the set of all titles. For each title check if there is the same title somewhere else in the sub df (len > 1). If this is the case, then iterate through all rows and write True in your additional column in the same row where the date condition is met for the first time.

