Search code examples
pythonpandasdataframeloopsstring-matching

converting print statement output in loop into dataframe


I am trying to adapt the following code from print statement to dataframe output.

places = ['England UK','Paris FRANCE','ITALY,gh ROME','New']  
location=['UK','FRANCE','ITALY']

def on_occurence(pos,location):
   print (i,':',location)
   
root = aho_create_statemachine(location)

for i in places:
  aho_find_all(i, root, on_occurence)

the print output for the above code is

England UK : UK

Paris FRANCE : FRANCE

ITALY,gh ROME : ITALY

I would like it so the df looked like:

message country
England UK UK
Paris FRANCE FRANCE
ITALY,gh ROME ITALY

I have tried the following with no luck

places = ['England UK','Paris FRANCE','ITALY,gh ROME','New']  
location=['UK','FRANCE','ITALY']

df = pd.DataFrame(columns=["message","location"])
def on_occurence(pos,location):
   print (i,':',location)
df = df.append({"message":i,"location":location},ignore_index=True)

root = aho_create_statemachine(location)

for i in places:
  aho_find_all(i, root, on_occurence)

However the df looks like the following

message country
NEW UK FRANCE ITALY

Solution

  •  df = pd.DataFrame(list(zip(places, location)), columns = ["Message", "Country"])
     print(df)
    

    My output:

             Message Country
    0     England UK      UK
    1   Paris FRANCE  FRANCE
    2  ITALY,gh ROME   ITALY
    

    If you want to print it without Row Index:

    print(df.to_string(index=False))
    

    Output in this case is:

       Message Country
    England UK      UK
    Paris FRANCE  FRANCE
    ITALY,gh ROME   ITALY