我正在尝试迭代列标题并填充包含每个类别的平均收入的列表。 我收到此错误,我尝试了很多不同的方法来尝试修复它。 所以我的数据框看起来像这样(看起来我没有足够的点来粘贴图像,但这里有一个链接): 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 循环中代替genrev1
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()
我尝试了以下循环但没有成功:
genheads = ['action', 'adventure', 'animation', 'comedy', 'crime', 'documentary', 'drama', 'family']
genres2 = genheads
genrev = []
for gen in genres2:
genrev.append(df.query('gen == True')['revenue_adj'].mean())
我收到一条错误消息“gen 未定义” 我尝试过而不是 gen:
df[gen] == True
'@df[gen] == True'
'@gen == True'
我已经在这个问题上坚持了几个星期了,任何有关这方面的帮助都将非常感激!!
最佳答案
您正在尝试在字符串中使用变量 gen,但不能这样做。
一个修复方法是将行更改为:
genrev.append(df.query(f'{gen} == True')['revenue_adj'].mean())
假设您使用的是 python 3.6 或更高版本。您可以执行的旧版本:
genrev.append(df.query('%s == True' % gen)['revenue_adj'].mean())
您还可以直接迭代列,而不是手动构建列表:
for col in df.columns:
...
关于python - 如何迭代 pandas 中的列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011536/