【问题标题】:use names of items in list of pandas使用熊猫列表中的项目名称
【发布时间】:2013-12-25 21:21:36
【问题描述】:

我已经使用 pandas(在 python 中)成功完成了数据操作。根据我的起始数据集,我最终会得到一系列数据框 - 例如 sampleA、sampleB 和 sample C。 我想用名称中的唯一标识符自动保存这些数据集(可以是很多) 所以我创建了一个熊猫列表,并使用循环来保存数据 - 我不能让循环每次都给出一个唯一的名称 - 参见例如:

import numpy as np
import pandas as pd
sampleA= pd.DataFrame(np.random.randn(10, 4))
sampleB= pd.DataFrame(np.random.randn(10, 4))
sampleC= pd.DataFrame(np.random.randn(10, 4))
allsamples=(sampleA, sampleB, sampleC)
for x in allsamples:
    #name = allsamples[x]
    #x.to_csv(name + '.dat', sep=',', header = False, index = False)
    x.to_csv(x + '.dat', sep=',', header = False, index = False)

当我使用上述(没有注释行)时,所有数据都保存为 x.data,我只保留最新的数据集;如果我做名称行,那么我会收到错误 知道如何想出一个命名方法,这样我就可以保存 3 个名为 sampleA.dat、sampleB.data 和 sampleC.dat 的文件

【问题讨论】:

    标签: python pandas save


    【解决方案1】:

    如果使用字符串,则可以使用vars()查找同名变量:

    allsamples = ('sampleA', 'sampleB', 'sampleC')
    for name in allsamples:
        df = vars()[name]
        df.to_csv(name + '.dat', sep=',', header=False, index=False)
    

    没有参数的vars() 等价于locals()。它返回一个“只读”dict 将局部变量名称映射到它们的关联值。 (dict 是“只读”的,因为它主要用于查找局部变量的值。像任何dict 一样,它是可修改的,但修改dict 不会修改变量。 )

    【讨论】:

    • 谢谢 - 它也有效;我的第一次尝试失败了,因为我没有注意到您更改了 allsamples - 但它也有效!谢谢我现在实际上更喜欢这个,因为创建列表(或元组)的工作更少
    【解决方案2】:

    请注意,python 元组项没有名称。而且,allsamples[x] 没有意义,你用数据框索引元组,你期望得到什么?

    可以使用字典而不是元组来同时命名和存储变量:

    all_samples = {'sampleA':sampleA, 'sampleB':sampleB, 'sampleC':sampleC}
    for name, df in all_samples.items():
        df.to_csv('{}.dat'.format(name), sep=',', header = False, index = False)
    

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2021-12-21
      • 2022-08-15
      • 2015-10-10
      相关资源
      最近更新 更多