我的python函数无法识别我的动态变量

我的python函数无法识别我的动态变量,python,pandas,Python,Pandas,我试图运行一个df.loc()函数,传入一个动态变量。我已经成功地分离出了5个不同的动态变量,并对它们进行了拆分。我试图使用for循环在5个变量中的每一个上运行我的函数 我的所有5个动态变量都存储在li中,下面是我用来对所有5个变量调用函数的for循环 for i in li: dataframe(i) 这是我正在传递的函数 def dataframe(x): df = pd.read_pickle('url_cpa') print(x) df = df.l

我试图运行一个df.loc()函数,传入一个动态变量。我已经成功地分离出了5个不同的动态变量,并对它们进行了拆分。我试图使用for循环在5个变量中的每一个上运行我的函数

我的所有5个动态变量都存储在
li
中,下面是我用来对所有5个变量调用函数的for循环

for i in li:
    dataframe(i)
这是我正在传递的函数

def dataframe(x):
    df = pd.read_pickle('url_cpa') 
    print(x) 
    df = df.loc[(df.Advertiser == x) , ['Spend','Date'])
    df = df.set_index('Advertiser')
    print(df)
    return df
如果我将一个变量硬编码到函数中,它将运行并返回所需的数据帧

 in: df = df.loc[(df.Advertiser == 'Advertiser 1') , ['Spend','Date'])
out: 
  'Advertiser 1' 
      Advertiser               Spend             Date
      Advertiser 1             101.3              10/12/16
      Advertiser 1             54.2               10/5/16
然而,当我替换变量x时,它返回一个空白的数据帧,如下所示

 in: df = df.loc[(df.Advertiser == x ) , ['Spend','Date'])
out: 
 'Advertiser 1'
Empty DataFrame
Columns: [Spend, Date]
Index: []
当我在函数中打印变量x时,它返回格式正确的变量

 in: print(x) 
out: 'Advertiser 1'

我不明白为什么调用变量x时,
df.loc()
命令返回空数据帧,而在硬编码变量时返回填充的数据帧

请发布重现问题的代码。例如,什么是
li
?尝试打印表示,但要排除任何奇怪的有趣字符:
print(repr(x))
@T_J_P:在
loc
选择中,当包含
['Spend','Date']
时,只有那些列在条件满足时才会返回。稍后,您将重用
“广告客户”
列将其设置为实际上不存在的索引轴。为了适应这种情况,您需要在
loc
选择期间将此列附加到返回的列列表中,如-
['Spend'、'Date'、'Advertiser']
@NickilMaveli我试图实现您的更改,我的
loc
语句现在的内容如下
df=df.loc[(df.Advertiser==x),['Advertiser'、'Date'、'Spend']}
但是我仍然有同样的问题,它返回一个空的数据帧。还有其他建议吗?@NickilMaveli我也尝试了
df=df[df['Advertiser']==x]
这应该做一个类似的函数,但是仍然返回空的df。我认为问题与
x
变量没有正确存储值有关。