【发布时间】:2019-02-21 12:13:10
【问题描述】:
我有 10000+ 个文件的文件夹,其中包含 10 个变量(X1、X2、...、X10)的数据。
文件名就是File1.json、File2.json等。
我需要为每个变量创建一个数据框,即 10 个数据框。
输入
- 变量= [X1, X2, ..., X10]
- FILES= [File1.json, File2.json, ... File14347.json]
期望的输出
- X1、X2、...、X10 的数据帧
我正在做以下事情
for i in range(0, len(VARIABLES)):
%reset_selective -f "^DATA$"
DATA=pd.DataFrame()
Data_name=VARIABLES[i]
print(Data_name)
for ii in range(0, len(FILES)):
file_name1='Directory/'
file_name2= FILES[ii]
file_name=file_name1+file_name2
with open(file_name, 'r') as fer:
data1 = json.load(fer)
df = pd.DataFrame({'count': data1})
Var_namei=df['count']['consistname']
if Var_namei==Data_name:
#create Dataframe
代码对第一个变量运行良好,因为我不知道哪些文件包含 X1 的数据。
但是,从第二次迭代开始,重新打开每个文件以查找 X2 的数据是没有意义的。 同样,当我到达最后一次迭代时,我应该只打开 X10 的文件。
我想避免打开/考虑其数据已被用作 DataFrame 输入的文件,例如File2 包含 X1 的值,因此我不想在查找 X2、X3 等的值时再次打开 File2
我已经尝试添加
k.iloc[ii,i]= ii
其中 k 是 if 条件后大小为零的数据帧 (File, VARiable),以便在变量 i 的文件 ii 打开时将 1 放入 i 列和 ii 行。这样,我可以在下一次迭代期间跳过这样的 ii 行文件。 但是,我无法在 for 循环期间访问 k 值。
有什么建议吗? 谢谢
【问题讨论】:
-
能否请您缩进代码的第一个 for 循环并提供输入示例和所需结果?
-
每个文件是包含单个值还是多个值?
-
多个值,从 100 到 50000 个值。事先不知道每个文件的数据量,即我需要打开文件并提取所有值才能知道它们的数量
-
您是否尝试使用 pd.read_json 将每个文件读入 DataFrame,然后根据列进行处理?
-
是的,问题是文件是嵌套的 json,因此我有“第一级”的变量名称,然后是第二级的数据和子变量,我得到
json.loads(First_Json_variable)
标签: python pandas dataframe for-loop jupyter-notebook