gpt4 book ai didi

python - 从 DataFrame 中的每个值中减去

转载 作者:行者123 更新时间:2023-12-04 00:53:25 24 4
gpt4 key购买 nike

我有一个如下所示的数据框:

userId   movie1   movie2   movie3   movie4   score
0 4.1 2.1 1.0 NaN 2
1 3.1 1.1 3.4 1.4 1
2 2.8 NaN 1.7 NaN 3
3 NaN 5.0 NaN 2.3 4
4 NaN NaN NaN NaN 1
5 2.3 NaN 2.0 4.0 1

我想从每部电影中减去电影分数,所以输出如下所示:

userId   movie1   movie2   movie3   movie4   score
0 2.1 0.1 -1.0 NaN 2
1 2.1 0.1 2.4 0.4 1
2 -0.2 NaN -2.3 NaN 3
3 NaN 1.0 NaN -1.7 4
4 NaN NaN NaN NaN 1
5 1.3 NaN 1.0 3.0 1

实际的数据框有数千部电影,这些电影是按名称引用的,所以我试图找到一个解决方案来遵守这一点。

我还应该提一下,这些电影没有按 ["movie1", "movie2", "movie3"] 的顺序列出,而是按标题列出的,而不是像 ["Star Wars", "Harry波特”、“指环王”]。数据集可以更改,所以我不知道列表中的最后一部电影是什么。

最佳答案

使用 df.filter识别 movie 列,然后从 score 数组中 subtract 这些列:

In [35]: x = df.filter(like='movie', axis=1).columns.tolist()

In [36]: df[x] = df.filter(like='movie', axis=1) - df.score.values[:, None]

In [37]: df
Out[37]:
userId movie1 movie2 movie3 movie4 score
0 0 2.1 0.1 -1.0 NaN 2
1 1 2.1 0.1 2.4 0.4 1
2 2 -0.2 NaN -1.3 NaN 3
3 3 NaN 1.0 NaN -1.7 4
4 4 NaN NaN NaN NaN 5
5 5 -3.7 NaN -4.0 -2.0 6

编辑:当电影列名是随机的。选择除 'userId', 'score' 之外的所有列:

x = df.columns[~df.columns.isin(['userId', 'score'])]
df[x] = df[x] - df.score.values[:, None]

关于python - 从 DataFrame 中的每个值中减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64625342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com