使用熊猫列表中的项目名称
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)
【讨论】:
以上是关于使用熊猫列表中的项目名称的主要内容,如果未能解决你的问题,请参考以下文章