我正在尝试遍历数据框标题名称并将每个名称分配给相应的列值,以便打印每个标题的名称将打印分配给该标题名称的列数据。目前的代码:
import pandas as pd
filepath = "...data"
df = pd.DataFrame.from_csv(filepath, header=0, index_col=None)
for i in list(df):
print i
i = str(i)
i = df[i]
print(cal_z)
结果:
C:\...TFS_plot.py"
wavelength (nm)
Mix1_p
Ccal_p
Mix1_zero
Cal_zero
Mix_deriv
Cal_deriv
Unnamed: 7
Mix1_raw
Cal_rawzero
Mix1_rawderiv
Traceback (most recent call last):
File "C:\....TFS_plot.py", line 14, in <module>
print(cal_z)
NameError: name 'Mix1_p' is not defined
我将迭代器分配给变量df [i]的方式有问题吗?
示例数据:
cat dog
3 1
2 2
1 4
print dog
结果:
(1,2,4)
答案 0 :(得分:3)
如果您的问题是如何创建具有相同DataFrame列名称的变量,并且您希望这些变量包含其各自列的值,那么这应该有帮助
import pandas as pd
df = pd.DataFrame ({'cat':[3,2,1],'dog':[1,2,4]})
for i in list(df):
exec(i + " = df[i].values")
print(dog)
print(cat)
您的变量将列值列为列表。
print(dog)
# returns [1 2 4]
print(cat)
# returns [3 2 1]
你所做的就是获取列名(i)并使用exec将相应的列传递给它(df [i] .values)。 快乐的编码。
答案 1 :(得分:0)
您好有办法做到这一点。但就我而言,最好只使用字典来存储变量。
使用list(df)
或df.columns.tolist()
获取您的df标头列表
然后使用exec()
函数同时对此List进行处理并存储相应的值
df = pd.DataFrame({"dog":[1,2,3,],"cat":[2,4,6]})
print(df)
输出:
cat dog
0 2 1
1 4 2
2 6 3
列表() - 功能
print(list(df))
['cat', 'dog']
EXEC() - 功能
for name in list(df):
exec("{}={}".format(name,list(df[name])))
之后,您可以通过列名
调用您的列表