我的python函数无法识别我的动态变量
我试图运行一个df.loc()函数,传入一个动态变量。我已经成功地分离出了5个不同的动态变量,并对它们进行了拆分。我试图使用for循环在5个变量中的每一个上运行我的函数 我的所有5个动态变量都存储在我的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
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
变量没有正确存储值有关。