【问题标题】:Pandas: Use Variables as ColumnsPandas:使用变量作为列
【发布时间】:2015-11-25 16:19:57
【问题描述】:

我正在尝试定义一个将变量传递给各种数据框函数的函数。在下面的例子中,我使用 .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

提前致谢!

【问题讨论】:

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

标签: function python-3.x pandas


【解决方案1】:

你的函数在一个副本上运行,所以你应该返回它,以便它在函数范围之外分配:

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多