我对Python非常陌生,目前正在进行一个个人项目,使用从Facebook下载的JSON文件,所有这些文件都来自Messenger上的一次聊天。尽管我定义了df,但我一直收到一个错误,说df没有定义。
我有多个JSON文件,我试图读取到一个dataframe中。我创建了一个循环,这样我就可以做到这一点,我在循环中定义了df。当我调用df查看它时,它说它没有定义。我的代码如下:
import pandas as pd import json,glob,os import numpy as np
file_path =“work/Desktop/fb data/jsonmssg/message_1.json”
file_dir =“work/Desktop/fb data/jsonmssg”
json_pattern = os.path.join(file_dir,'*. json')
file_list = glob.glob(json_pattern)
定义域= []
对于文件列表中的f:open(file)as file:chat_history = json.loads(file.read())
json_data = pd.json_normalize(chat_history['messages'])
dfs.append(json_data)
df = pd.concat(dfs)
df
NameError Traceback(most recent call last)in ----〉1 df
名称错误:未定义名称“df”
有谁知道我该怎么做吗?
我试着创建一个循环来遍历同一目录中的所有JSON文件,希望它能将它们连接到一个 Dataframe 中,但没有成功。
2条答案
按热度按时间h7appiyu1#
首先,当试图获取不同目录中的文件的路径名列表时,包括目录中的目录,你应该使用
recursive
标志。其次,由于您定义路径的方式,您放入glob.glob()的路径名本身可能无效。这是因为不同的操作系统具有不同的路径名约定,这可能会影响
os.path.join()
。例如,在我的操作系统上,os.path.join('work/Desktop/fb data/jsonmssg', '*.json')
导致'work/Desktop/fb data/jsonmssg\\*.json'
。请注意不兼容的'/'
和'\\'
。您可以中继os.path.join()来为您的操作系统构建正确的路径名
在继续之前,请确保使用
os.path.exists(json_pattern)
检查路径是否正确。ttisahbt2#
首先,我不确定glob是否是你最好的选择。至少,这不是我会做的......你只需要glob到“**”目录。
不如这样:
希望这能帮助你简化生活:)