如何使用另一个数据框创建新的数据框

数据挖掘 Python 熊猫 大数据
2022-03-08 20:09:43

我已经为一个项目创建并处理了一个 DataFrame。它如下所示:

评论家项目评级

一个…………1………………5

b........2........3

b.............3.............2

c.............8.............1

一个…………1………………5

b........4........4

我的 DataFrame 有 1M+ 行和 8 列。

我想创建一个新的 DataFrame,其中行是唯一的评论家,列是唯一的项目,各个单元格是评论家对特定项目的评分。如果评论家没有评论过该项目,那么我想在那里添加一个 NA。

我尝试对行执行以下操作:

ratings = pd.DataFrame(f.review_profilename.unique())

对于专栏,我看到了很多涉及使用的人的答案

ratings.rename(<individual column names>, axis='columns')

但这对我没有帮助,因为我无法列出所有唯一的项目名称。

编辑:我通过使用数据透视表解决了这些问题。我是熊猫的新手,不知道存在这样的东西。我使用的确切语法是

ratings = f.pivot_table(index = 'critic',columns = 'item', values = 'ratings')
1个回答

不知道你所说的“独特”是什么意思,我猜如果有 n 个评论家,m 个项目,你需要的是一个形状为 n*m 行和 3 列的数据框,对吧?如果是这样,请尝试演示:

#1. the original dataframe
df = pd.DataFrame([['a',1,5],['b',2,3],['b',3,2],['c',8,1],['a',1,5]],
     columns=['critic','item','rating'])

#2. create the first two columns(critic, item) by their permutation
from itertools import product
first_two_column = pd.DataFrame(list(product(set(df.critic),set(df.item))),
                   columns=['critic','item'])

#3. merge the first two column with ratings, using left join to add nan, drop duplicate first
first_two_column.merge(right=df.drop_duplicates(),on=['critic','item'],how='left')