dictionary - 从数据框字典中提取数据框

标签 dictionary pandas

我有一个包含许多 csv 文件的目录,我已将这些文件加载​​到数据框字典中

因此,只需 3 个示例小 csv 文件来说明

    import os
    import csv
    import pandas as pd

    #create 3 small csv files for test purposes
    os.chdir('c:/test')
    with open('dat1990.csv','w',newline='') as fp:
        a=csv.writer(fp,delimiter=',')
        data = [['Stock','Sales','Year'],
                ['100','24','1990'],
                ['120','33','1990'],
                ['23','5','1990']]
        a.writerows(data)

    with open('dat1991.csv','w',newline='') as fp:
        a=csv.writer(fp,delimiter=',')
        data = [['Stock','Sales','Year'],
                ['400','35','1991'],
                ['450','55','1991'],
                ['34','6','1991']]
        a.writerows(data)

    with open('other1991.csv','w',newline='') as fp:
        a=csv.writer(fp,delimiter=',')
        data = [['Stock','Sales','Year'],
                ['500','56','1991'],
                ['600','44','1991'],
                ['56','55','1991']]
        a.writerows(data)

创建用于将 csv 文件处理为数据帧的字典
    dfcsv_dict = {'dat1990': 'dat1990.csv', 'dat1991': 'dat1991.csv', 
        'other1991': 'other1991.csv'}

创建一个简单的导入函数,用于将 csv 导入到 Pandas
    def myimport(csvfile):
        return pd.read_csv(csvfile)

遍历字典以将所有 csv 文件导入到 Pandas 数据帧中
    df_dict = {}
    for k, v in dfcsv_dict.items():
        df_dict[k] = myimport(v)

鉴于我现在在统一字典对象中可能有数千个数据帧,我如何选择一些并从字典中“提取”它们?

例如,我将如何仅提取嵌套在字典中的这三个数据帧中的两个,例如
    dat1990 = df_dict['dat1990']
    dat1991 = df_dict['dat1991']

但不使用字面赋值。也许是字典上的某种循环结构,希望有一种方法可以根据字典键中的字符串序列选择一个子组:
例如所有名为 dat 或 1991 等的数据框

我不想要另一个“子字典”,但想将它们提取为命名为“独立”数据帧,如上面的代码所示。

我正在使用 python 3.5。

最佳答案

这是 2016 年 1 月的一个老问题,但由于没有人回答,这里是 2019 年 10 月的答案。可能对将来的引用有用。

我认为您可以跳过创建数据框字典的步骤。我之前写了一个关于如何从多个 CSV 文件创建单个主数据框的答案,并在主数据框中添加一列,其中包含从 CSV 文件名中提取的字符串。我认为你基本上可以在这里做同样的事情。

Create a dataframe of csv files based on timestamp intervals

脚步:

  • 创建包含文件的文件夹的路径
  • 在文件夹中创建文件列表
  • 创建空数据框以存储 CSV 数据框
  • 将每个 csv 作为数据帧循环遍历
  • 添加文件名作为字符串的列
  • 将单个数据框连接到主数据框
  • 使用数据框过滤器掩码创建新的数据框

  • import pandas as pd
    import os
    
    # Step 1: create a path to the folder, syntax for Windows OS
    path_test_folder = 'C:\\test\\'
    
    # Step 2: create a list of CSV files in the folder
    files_in_folder = os.listdir(path_test_folder)
    files_in_folder = [x for x in files_in_folder if '.csv' in x]
    
    # Step 3: create empty master dataframe to store CSV files
    df_master = pd.DataFrame()
    
    # Step 4: loop through the files in folder
    for each_csv in files_in_folder:
    
        # temporary dataframe for the CSV
        path_csv = os.path.join(path_test_folder, each_csv)
        temp_df = pd.read_csv(path_csv)
    
        # add folder with filename
        temp_df['str_filename'] = str(each_csv)
    
        # combine into master dataframe
        df_master = pd.concat([df_master, temp_df])
    
    # then filter on your filenames
    mask_filter = df_master['str_filename'].isin(['dat1990.csv', 'dat1991.csv'])
    df_filter = df_master.loc[mask_filter]
    

    关于dictionary - 从数据框字典中提取数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34933044/

    相关文章:

    python - 解析 Pandas 返回列表

    python - 如何从列表列表创建 Pandas DataFrame?

    python - 使用字典翻译短语? (Python)

    python - 将对象添加到字典的开头

    python - 如何从使用 .loc 找到的特定行中提取值以返回变量

    python-3.x - 使用 Pandas python 从 geonames 导入文本文件

    python - 从元组列表创建 pandas 日期时间索引

    python - 如果 dict().fromkeys() 都指向同一个对象,那么默认值参数有什么用呢?

    c# - 从 List<string[]> 中获取唯一字符串的计数到字典中

    python - 如何从每个键有多个值的字典中写入 csv 文件?