python - np.mean 对于跨多列具有特定值的行

标签 python for-loop numpy

我对 Python 比较陌生,无法找到问题的答案。

假设我已将 DataFrame 保存到变量 movie 中。数据框看起来有点像这样:

Genre1    Genre2   Genre3          sales
Fantasy   Drama    Romance         5
Action    Fantasy  Comedy          3
Comedy    Drama    ScienceFiction  4
Drama     Romance  Action          8

我想要做的是获取出现在 Genre1、Genre2 或 Genre3 任何列中的每个独特类型的平均销售额。 我尝试了一些不同的事情。我现在拥有的是:

for x in pd.unique(movies[['Genre1','Genre2','Genre3']].values.ravel()):
mean_genre = np.mean(movies['sales']) 
print(x, mean_genre)

我得到的结果是:

Fantasy  5.0
Drama  5.0
Romance 5.0
Action  5.0
Comedy  5.0
ScienceFiction 5.0

因此,它确实为我提供了三列中的独特流派,但它计算了整个列销售额的平均值。如何计算出现在 Genre1、Genre2 和 Genre3 三列中的每个独特类型的平均销售额?例如对于“幻想”类型,它应该使用第 1 行和第 2 行来计算平均销售额。

最佳答案

这是一个更短的版本:

allGenre=pd.unique(movies[['Genre1','Genre2','Genre3']].values.ravel())
for genre in allGenre:
    print("%s : %f") % (genre,movies[movies.isin([genre]).any(1)].sales.mean())

关于python - np.mean 对于跨多列具有特定值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34886918/

相关文章:

python - 为什么重启线程时需要重新创建实例?

python - 为什么在 Windows 10 的 Python Django 项目中使用 pipwin 安装 pyaudio 时会得到 "HTTP Error 404: Not Found"?

python - 使用 gfortran 支持为 Lion Python 2.6 构建 numpy

python - 带有标题和描述标签的 SEO 和 Django

php - 如何在foreach循环中分离数据列

java - 使用for循环测试数字是否为奇数

javascript不会执行嵌套的for循环

python - Python 中的高效二维边缘检测

python - 三维到二维

python - 使用 XPath 提取标签之间的文本,包括标记