首页 > 解决方案 > 将循环中的打印语句输出转换为数据帧

问题描述

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

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 看起来像:

信息 国家
英格兰 英国 英国
法国巴黎 法国
意大利,gh 罗马 意大利

我试过以下没有运气

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看起来如下

信息 国家
新的 英国 法国 意大利

标签: pythonpandasdataframeloopsstring-matching

解决方案


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

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

等等。

然后循环使用:

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

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


推荐阅读