如何定义在python中调用特定数据框列的函数/宏?

时间:2016-12-16 17:24:19

标签: python

我正在尝试编写一个函数来调用我之前在代码中定义的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

有解决办法吗?

2 个答案:

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