我正在尝试编写一个函数来调用我之前在代码中定义的pandas DataFrame中的特定列。
数据框可以很简单,例如
df = pd.DataFrame(
{
'col0': np.random.randint(0,100,100),
'col1': np.random.randint(0,100,100),
'col2': np.random.randint(0,100,100)
}
)
下一步是编写一个调用col0,col1或col2的函数。
def hist(x):
return np.histogram(
df['x'],
bins = 6
)
但是,当您通过数据框中定义的列名调用函数时,python无法识别该名称;
In [1]: hist(col1)
Traceback (most recent call last):
File "<ipython-input-68-e860df6abc8e>", line 1, in <module>
hist(col1)
NameError: name 'col1' is not defined
有解决办法吗?
答案 0 :(得分:0)
你正在混淆字符串和变量。你可能想要像
这样的东西def hist(x):
return np.histogram(
df[x], # no quotes! You want the value of x here, not a literal "x"
bins = 6
)
并将其称为:
foo = hist('col1') # quotes necessary since you're passing the string "col1"
否则,Python会查找名为col1
的变量,但尚未定义。
答案 1 :(得分:0)
你应该删除x的引号,并将一个字符串作为函数输入并添加列的名称:
def hist(x):
return np.histogram(df[x], bins = 6)
hist('col1')