【问题标题】:Create dictionary with keys as file names values are content使用键创建字典,因为文件名值是内容
【发布时间】:2019-02-26 09:20:04
【问题描述】:

我有 4 个文件,我根据 csv 文件的名称创建了列表:

file_names['file1', 'file2', 'file3', 'file4']

在每个文件中,我有超过 6-7 列。我可以使用以下代码获取列名:

for x in file_names:
    df = pd.read_csv(path + x)
    print(list(df.columns))

它工作正常,但如何创建(而不是手动)带有 for 循环的字典,其中键为 file_names,值为 list(df.columns)

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: python pandas dictionary key-value


【解决方案1】:

使用字典理解,nrows=0 是为了获得更好的只读头性能:

d = {x: pd.read_csv(path + x, nrows=0).columns.tolist() for x in file_names}

或者通过readline循环读取头文件:

d = {}
for x in file_names:
    with open(x) as f:
        d[x] = f.readline()

【讨论】:

    【解决方案2】:

    首先创建一个空的dict,然后简单地将字典键值作为文件名,将list(df.columns) 作为其值,这会在dict 中创建新条目:

    file_names = ['file1', 'file2', 'file3', 'file4']
    
    file_data = {}
    
    for x in file_names:
        df = pd.read_csv(path + x)
        file_data[x] = list(df.columns)
    

    【讨论】:

    • 是的,它有效。你能解释一下它是如何工作的吗?因为当我打印 file_data[x] 以查看内容时,它会返回列名列表,但是当我打印 file_data 时,我会看到键值。(文件名和列)它如何将文件名也写入 dict?
    • 因此,当我们调用file_data[x] = list(df.columns) 行时,x(即文件名)是我们在file_data dict 中创建的键,list(df.columns) 是值。我们正在对 file_names 中的每个文件名(我们称之为 x)执行此操作。如果您需要更多信息,这些关于 for loopsdicts 的教程应该会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2019-05-04
    • 2011-08-22
    • 2013-11-01
    • 2022-12-11
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多