python - 如何迭代 pandas 中的列标题

标签 python pandas

我正在尝试迭代列标题并填充包含每个类别的平均收入的列表。 我收到此错误,我尝试了很多不同的方法来尝试修复它。 所以我的数据框看起来像这样(看起来我没有足够的点来粘贴图像,但这里有一个链接): 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/

相关文章:

python - 可广播的 Numpy 点

python - Pandas 通过大数据框的不同聚合值进行分组

python - 查询具有列表值的 Pandas 数据框列

python - pandas 合并与 ='outer' 和 pandas 追加方式之间的区别

python - pandas 应用并分配给多列

python - 如何在 pymongo 中禁用 '_id'

python - StopIteration 不会被 main() 捕获

python - 在 Python 中使用 Selenium 从部分可见的滚动框中抓取所有文本

Python Panda 数据框按月-年排序

python - 如何用 Python 为 GRPC 服务器编写单元测试?