使用熊猫列表中的项目名称

Posted

技术标签:

【中文标题】使用熊猫列表中的项目名称【英文标题】: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 的文件

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于使用熊猫列表中的项目名称的主要内容,如果未能解决你的问题,请参考以下文章

将单个项目附加到熊猫系列中的列表

如何根据列表中的项目复制熊猫中的行[重复]

从存储为熊猫数据框中的字符串的列表中提取项目

根据字符串列表过滤熊猫中的数据框

如何用列表分解熊猫数据框以用相同的ID标记同一行中的那些?

熊猫数据框列上的子字符串