Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 熊猫:使用变量作为列_Function_Python 3.x_Pandas - Fatal编程技术网

Function 熊猫:使用变量作为列

Function 熊猫:使用变量作为列,function,python-3.x,pandas,Function,Python 3.x,Pandas,我试图定义一个函数,将变量传递到各种数据帧函数中。在下面的例子中,我将.loc与定义的变量一起使用。由于某些原因,我似乎无法在应用该函数后生成所需的结果 import pandas as pd df = pd.DataFrame({'COL1':['A','A','B','B'], 'COL2': [1,1,2,2,], 'COL3': [2,3,4,6]}) col2 = 'COL2' def pandfun(df, col2): df = df.loc[df[col2] == 1]

我试图定义一个函数,将变量传递到各种数据帧函数中。在下面的例子中,我将.loc与定义的变量一起使用。由于某些原因,我似乎无法在应用该函数后生成所需的结果

import pandas as pd
df = pd.DataFrame({'COL1':['A','A','B','B'], 'COL2': [1,1,2,2,], 'COL3': [2,3,4,6]})
col2 = 'COL2'
def pandfun(df, col2):
    df = df.loc[df[col2] == 1]
df = pandfun(df, col2)
预期的结果是:

    COL1    COL2    COL3
0     A       1       2
1     A       1       3

提前谢谢

您的函数正在副本上运行,因此您应该返回它,以便它在函数范围之外分配:

In [117]:
df = pd.DataFrame({'COL1':['A','A','B','B'], 'COL2': [1,1,2,2,], 'COL3': [2,3,4,6]})
col2 = 'COL2'
def pandfun(df, col2):
    return df.loc[df[col2] == 1]
df = pandfun(df, col2)
df

Out[117]:
  COL1  COL2  COL3
0    A     1     2
1    A     1     3

您的函数正在副本上运行,因此您应该返回副本,以便它在函数范围之外进行分配:

In [117]:
df = pd.DataFrame({'COL1':['A','A','B','B'], 'COL2': [1,1,2,2,], 'COL3': [2,3,4,6]})
col2 = 'COL2'
def pandfun(df, col2):
    return df.loc[df[col2] == 1]
df = pandfun(df, col2)
df

Out[117]:
  COL1  COL2  COL3
0    A     1     2
1    A     1     3

它看起来像是在一个副本上运行的。你应该返回
df.loc[df[col2]==1]
,然后将返回的df分配给
df
,所以我尝试从“df.loc…”行中取出“df=”,但它没有返回任何内容。将你的函数更改为:
def pandfun(df,col2):返回df.loc[df[col2]==1]
,然后它应该可以正常工作了。你是最棒的!它看起来像是在一个副本上运行的。你应该返回
df.loc[df[col2]==1]
,然后将返回的df分配给
df
,所以我尝试从“df.loc…”行中取出“df=”,但它没有返回任何内容。将你的函数更改为:
def pandfun(df,col2):返回df.loc[df[col2]==1]
,然后它应该可以正常工作了。你是最棒的!