我有一个大约有4000万行的大型数据帧,其 struct 如下:

    author    video

0  "user1"   "video1"
1  "user2"   "video1"
2  "user2"   "video2"
3  "user3"   "video3"
                     

其中,作者字段是指特定视频下 comments 的作者. 还请注意,"作者"并不是唯一的值.

我想要做的是将这个数据帧重新组织到一个数据 struct 中, for each 作者分配一个包含他们 comments 的所有视频的列表.我在想这样的事情:

  {"user1": ["video1"],

  "user2": ["video1", "video2"], 

  "user3": ["video3"]}

我try 使用for循环,它为作者字段中的每个(预先计算的)唯一值计算一个新的数据帧,如下所示:

new_df = df[(df["author"] == name_of_the_author)]

然后,从这个新的数据帧,我可以建立一个单一作者 comments 的视频列表,但每次迭代需要几秒钟,这真的很糟糕,因为我有近400万个不同的作者

我相信有一种更简单、更快捷的方法来做这件事,但我找不到解决办法

提前感谢所有可能帮助我或为我指明正确方向的人!

推荐答案

您可以使用groupby.aggto_dict:

df.groupby('author')['video'].agg(list).to_dict()

或者可能是在纯Python 中:

out = {}

for author, video in zip(df['author'], df['video']):
    out.setdefault(author, []).append(video)

输出:

{'user1': ['video1'], 'user2': ['video1', 'video2'], 'user3': ['video3']}

Python相关问答推荐

PyQt5如何将pyuic 5生成的Python类添加到QStackedWidget中?

如何在PIL、Python中对图像应用彩色面膜?

使用from_pandas将GeDataFrame转换为polars失败,ArrowType错误:未传递numpy. dype对象

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

更改matplotlib彩色条的字体并勾选标签?

Pandas—合并数据帧,在公共列上保留非空值,在另一列上保留平均值

优化器的运行顺序影响PyTorch中的预测

如何在表中添加重复的列?

如何更新pandas DataFrame上列标题的de值?

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

网格基于1.Y轴与2.x轴显示在matplotlib中

如何从pandas DataFrame中获取. groupby()和. agg()之后的子列?

在电影中向西北方向对齐""

如何反转一个框架中列的值?

python的文件. truncate()意外地没有截断'

如何在Python中从html页面中提取html链接?

如何在Python中解析特定的文本,这些文本包含了同一行中的所有内容,

以极轴表示的行数表达式?

用0填充没有覆盖范围的垃圾箱