我正在尝试运行传递动态变量的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'
我无法弄清楚为什么df.loc()
命令在我的变量x上调用时返回空数据帧,但在我对变量进行硬编码时会返回填充的数据帧。