我尝试遍历列标题并填充一个包含每个类别的平均收入的列表。 我遇到了这个错误,我尝试了很多不同的方法来修复它。 所以我的数据框如下所示(看起来我没有足够的点来粘贴图像,但这里有一个链接): each row in the dataframe represent an idividual movie. column revenue_adj populated with revenue values, one column for each genre populated with TRUE/FALSE indicating that the movie falls under that specific genre.
这段代码工作得很好,但我希望在for循环中而不是在steadgenrev1中执行
genrev1= df.query('action == True')['revenue_adj'].mean()
genrev2 = df.query('adventure == True')['revenue_adj'].mean()
genrev3 = df.query('animation == True')['revenue_adj'].mean()
genrev4 = df.query('comedy == True')['revenue_adj'].mean()
genrev5 = df.query('crime == True')['revenue_adj'].mean()
genrev6 = df.query('documentary == True')['revenue_adj'].mean()
genrev7 = df.query('drama == True')['revenue_adj'].mean()
genrev8 = df.query('family == True')['revenue_adj'].mean()
我尝试了以下循环,但没有成功:
^{pr2}$我得到一个错误说“gen is not defined” 而不是gen,我尝试过:
df[gen] == True
'@df[gen] == True'
'@gen == True'
我已经坚持了好几个星期了,如果有任何帮助,我将不胜感激!!在
欢迎来到stackoverflow!在
我不认为有必要对列进行循环。循环通常是处理pandas数据帧的低效方法,如果可能,应该避免使用。考虑到这一点,我将提出一个不同的解决方案。如果你真的需要遍历这些列,那就道歉。如果你在你的问题中多提供一点关于你为什么选择你的方法的背景。。。你已经看过了,为什么没用。。。它通常有助于引导人们更好地给你更相关的答案。在
下面是我该怎么做。。。没有循环。在
您试图在字符串中使用变量gen,但不能这样做。在
一种解决方法是将行更改为:
genrev.append(df.query(f'{gen} == True')['revenue_adj'].mean())
假设您使用的是python3.6或更高版本。旧版本可以:
genrev.append(df.query('%s == True' % gen)['revenue_adj'].mean())
也可以直接迭代列,而不是手动构建列表:
你可以试试这样的方法:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐