将循环中的打印语句输出转换为数据帧

converting print statement output in loop into dataframe

我正在尝试将以下代码从打印语句改编为数据帧输出。

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)

以上代码的打印输出是

英国英国:英国

法国巴黎:法国

意大利,gh 罗马 : 意大利

我希望 df 看起来像:

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

我已经尝试了以下但没有成功

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)

但是 df 看起来像下面这样

message country
NEW UK FRANCE ITALY

我建议使用字典而不是 2 个单独的列表 EG:

placeAndLocation = {
    "england UK" : "UK",
    "Paris France" : "france"
}

等等。

然后循环使用:

for place, location in placeAndLocation.items():
    print("place: " + place)
    print("location: " + location)

我发现这更容易,因为您可以很容易地看到哪些数据字段与什么值对齐,并且数据包含在一个变量中,从而更容易重新定义行

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

我的输出:

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

如果你想在没有行索引的情况下打印:

print(df.to_string(index=False))

这种情况下的输出是:

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