如果我理解你的问题,你想将csv表中的每一行转换为一个单独的变量,而该变量又包含该行的所有值.
以下是您如何处理此问题的示例.有很多方法可以达到这个目的,其他方法可能更有效,更快,更pythonic,更时髦或其他.但是下面的代码是为了帮助您了解如何将tabellic数据存储到命名变量中而编写的.
两个评论:
>如果您只需要阅读数据,那么您可能需要寻找一种不那么复杂的解决方案
> L1Neuron类不是非常透明,而它的成员不能从代码中读取,而是由attrs中的变量列表创建运行时.您可能需要查看namedTuples以获得更好的可读性.
`
import pandas as pd
from io import StringIO
import numbers
# example data:
atestred = StringIO("""fixed acidity;volatile acidity;citric acid;\
residual sugar;chlorides;free sulfur dioxide;total sulfur dioxide;\
density;pH;sulphates;alcohol;quality
7.4;0.7;0;1.9;0.076;11;34;0.9978;3.51;0.56;9.4;5
7.8;0.88;0;2.6;0.098;25;67;0.9968;3.2;0.68;9.8;5
7.8;0.76;0.04;2.3;0.092;15;54;0.997;3.26;0.65;9.8;5
""")
# read example data into dataframe 'data'; extract values and column names:
data = pd.read_csv(atestred,error_bad_lines=False,sep=';')
colNames = list(data)
class L1Neuron(object):
"neuron class that holds the variables of one data line"
def __init__(self,**attr):
"""
attr is a dict (like {'alcohol': 12,'pH':7.4});
every pair in attr will result in a member variable
of this object with that name and value"""
for name,value in attr.items():
setattr(self,name.replace(" ","_"),value)
def gi(self):
"print all numeric member variables whose names don't start with an underscore:"
for v in sorted(dir(self)):
if not v.startswith('_'):
value = getattr(self,v)
if isinstance(value,numbers.Number):
print("%-20s = %5.2f" % (v,value))
print('-'*50)
# read csv into variables (one for each line):
neuronVariables = []
for s in data.values:
variables = dict(zip(colNames,s))
neuron = L1Neuron(**variables)
neuronVariables.append(neuron)
# now the variables in neuronVariables are ready to be used:
for n11 in neuronVariables:
print("free sulphur dioxide in this variable:",n11.free_sulfur_dioxide,end = " of ")
print(n11.total_sulfur_dioxide,"total sulphur dioxide" )
n11.gi()