gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:18:31 26 4
gpt4 key购买 nike

我有一个包含许多 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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com