代码之家  ›  专栏  ›  技术社区  ›  X S

在Pyton中导入、连接和命名多个文件(论文项目)

  •  0
  • X S  · 技术社区  · 3 年前

    对于我的论文项目,我需要导入并加入117。json文件转换为一个数据帧。手动运行,但我无法找到循环。另一个问题是,这些特性需要在数据框中具有文件名。

    基本上,我需要在下面自动化此过程:

    df_aa = pd.read_json(r'path')
    
    df_aa.columns = ['Time', 'Active_adresses']
    #df_aa.head()
    #df_aa.tail()
    
    df_tf = pd.read_json(r'path')
    
    df_tf.columns = ['Time', 'Total_fees']
    #df_tf.head()
    #df_tf.tail()
    
    df_tf.merge(df_aa, on='Time', how='left')
    

    Example picture

    有谁能帮我吗?我没有太多编程经验。

    1 回复  |  直到 3 年前
        1
  •  0
  •   Peter Badida I'm Geeker    3 年前

    找到一种通用模式,通过该模式可以拆分/分块所有循环文件,以执行单个加载操作。如果不需要特殊处理,请使用

    from glob import glob
    print(list(glob("*.json")))  # put to list if you want to print it
    
    for item in glob("*.json"):
        do_your_loading()
    

    要获取所有文件,请逐个加载它们(如果库中有一些文件,也可以通过聚合函数),然后在必要时将数据帧合并为一个数据帧。

    对于数据框中的名称,只需在初始块加载后添加一个新列,所有行上都将包含文件名(来自glob或其他)。

    例如:

    dataframes = {}
    for item in glob("*.json"):
        df_aa = pd.read_json(r'path')
        df_aa.columns = ['Time', 'Active_adresses']
        #df_aa.head()
        #df_aa.tail()
    
        # put the filename to a new column
        df_aa = df_aa.assign(filename=item)
    
        df_tf = pd.read_json(r'path')
        df_tf.columns = ['Time', 'Total_fees']
        #df_tf.head()
        #df_tf.tail()
        df_tf.merge(df_aa, on='Time', how='left')
    
        # put the filename to a new column
        df_tf = df_tf.assign(filename=item)
    
        dataframes[item] = {"aa": df_aa, "tf": df_tf}
    
    dataframes["my-filename.json"]["aa"].head()
    dataframes["my-filename.json"]["tf"].head()