2017-06-29 144 views
0

我想遍历数据框标题名称并将每个名称分配给各自的列值,以便打印每个标题的名称将打印分配给该标题的列数据名称。当前代码:如何将Dataframe列标题名称分配给列变量与迭代

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

你可以指定你的问题打电话给你的名单?你究竟想要做什么?目前'i = df [i]'将列指定给'i',但是之后你并没有使用'i',所以没有任何反应。 – Johannes

+0

即使我将'i = df [i]'更改为'a = df [i]',它仍然不起作用。 – Joey

+0

你的问题仍然不清楚,你的期望输出是什么?从你的例子看来,你想要创建新的变量,哪些名称是列名,然后你想要包含各列数据作为列表。那是对的吗? – Johannes

回答

3

如果你的问题是如何创建变量与您的数据框列相同的名称,并希望这些变量包含的值他们各自的列然后这应该帮助

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) 

您的变量将hav e列值作为列表。

print(dog) 
# returns [1 2 4] 
print(cat) 
# returns [3 2 1] 

所有你正在做的是让列名(i)和使用exec,适合于通过相应的列到它(DF [I] .values)。 快乐编码。

+0

感谢您的回答! exec函数是否只接受字符串值呢? – Joey

+1

其实,我很抱歉,我给了错误的链接,你可以看到[这里](https://www.programiz。com/python-programming/methods/built-in/exec),exec可以接受字符串或代码对象,在这种情况下,我们使用字符串参数作为要执行的代码行。 exec(i +“= df [i] .values”)是dog = df ['dog']。的值或cat = df ['cat']。 –

0

嗨有一种方法可以做到这一点。但就目前而言,使用字典来存储变量会更好。

使用list(df)df.columns.tolist(),让您的DF的头 的名单,然后使用exec()功能的同时iterrating在这个名单并存储相应的值

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]))) 

事后你可以通过列名

相关问题