如何使用迭代将Dataframe列标题名称分配给列变量

时间:2017-06-29 14:06:41

标签: python pandas dataframe iteration

我正在尝试遍历数据框标题名称并将每个名称分配给相应的列值,以便打印每个标题的名称将打印分配给该标题名称的列数据。目前的代码:

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)

2 个答案:

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

之后,您可以通过列名

调用您的列表