如何正确旋转 DataFrame?

How do I pivot a DataFrame correctly?

这是我第一个post关于堆栈溢出的问题,对于在提出这个问题时犯的错误提前表示歉意。

我正在尝试对 DataFrame 进行透视,但我很难理解应该如何正确地完成它,并考虑到值的变化。我是 Python 和 Pandas 的初学者。

我正在使用的数据集可以在这里找到:https://www.kaggle.com/szymonjanowski/internet-articles-data-with-users-engagement

我已经处理这个数据集到此为止:article_data df

接下来我想做的是旋转这个 df,使 'source_id' 成为列。我已经使用 pivot_table 方法完成了该操作,但我得到了很多 NaN 值。这是我得到的结果的打印屏幕:pivoted data

此外,我不确定数据透视表是否仅考虑 'source_id' 列中的唯一值。为此,我试图实现一个 for 循环,它将遍历 source_id 的唯一值并将它们存储在旋转的 DF 中。但是,我不知道怎么写那个代码。

如果您能就我做得好的和不好的方面提供一些建议(以及一些解决方法),我将不胜感激。

由于 source_id 中有重复值,您需要执行某种按该列分组的聚合,然后使用 .unstack()。但这是不可取的,因为您有很多无法聚合的文本数据。 你可以试试

df.set_index('source_id').T

但我不知道是否允许重复的索引名称。