Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从嵌套的for循环构建pandas数据帧

如何从嵌套的for循环构建pandas数据帧
EN

Stack Overflow用户
提问于 2019-07-19 00:14:57
回答 1查看 1.1K关注 0票数 2

我正在使用谷歌云视频智能API,并试图将结果放入熊猫数据帧中。该接口的输出类为repeatedcompositecontainer。因此,我的想法是在API函数中使用的for循环中构建一个数据帧。

下面是API函数处理结果的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    segment_labels = result.annotation_results[0].segment_label_annotations
    for i, segment_label in enumerate(segment_labels):
        print('Video label description: {}'.format(
            segment_label.entity.description))
            
        for category_entity in segment_label.category_entities:
            print('\tLabel category description: {}'.format(
                category_entity.description))

        for i, segment in enumerate(segment_label.segments):
            start_time = (segment.segment.start_time_offset.seconds +
                          segment.segment.start_time_offset.nanos / 1e9)
            end_time = (segment.segment.end_time_offset.seconds +
                        segment.segment.end_time_offset.nanos / 1e9)
            positions = '{}s to {}s'.format(start_time, end_time)
            confidence = segment.confidence
            print('\tSegment {}: {}'.format(i, positions))
            print('\tConfidence: {}'.format(confidence))
        print('\n')

this Stack Overflow article的帮助下,我创建了一个空列表,并附加了结果,稍后将其转换为pandas数据帧,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    df = []
    
    # Process video/segment level label annotations
    segment_labels = result.annotation_results[0].segment_label_annotations
    for i, segment_label in enumerate(segment_labels):
        print('Video label description: {}'.format(
            segment_label.entity.description))
            
        for category_entity in segment_label.category_entities:
            print('\tLabel category description: {}'.format(
                category_entity.description))
            df.append({'Description': category_entity.description})

        for i, segment in enumerate(segment_label.segments):
            start_time = (segment.segment.start_time_offset.seconds +
                          segment.segment.start_time_offset.nanos / 1e9)
            end_time = (segment.segment.end_time_offset.seconds +
                        segment.segment.end_time_offset.nanos / 1e9)
            positions = '{}s to {}s'.format(start_time, end_time)
            confidence = segment.confidence
            df.append({'Confidence': segment.confidence, 'Start': start_time, 'End': end_time})
            print('\tSegment {}: {}'.format(i, positions))
            print('\tConfidence: {}'.format(confidence))
        print('\n')

当我只尝试最后一个for循环时,它给出了一个很好的结构化数据框架,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> frame = pd.DataFrame(df)
>>> frame
Confidence         End  Start
  0.704168  599.682416    0.0
  0.737053  599.682416    0.0
  0.832496  599.682416    0.0
  0.427637  599.682416    0.0
  0.518693  599.682416    0.0

但是,当我将相同的to逻辑添加到for循环中时,它会给出一个失真的数据帧,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> frame = pd.DataFrame(df)
>>> frame
Confidence    Description         End  Start
       NaN     technology         NaN    NaN
  0.741133            NaN  599.682416    0.0
       NaN       keyboard         NaN    NaN
  0.328138            NaN  599.682416    0.0
       NaN         person         NaN    NaN
  0.436333            NaN  599.682416    0.0
       NaN         person         NaN    NaN

我希望有一种方法可以修复它并获得数据帧,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> frame = pd.DataFrame(df)
>>> frame
Confidence  Description    End        Start
  0.741133  technology   599.682416    0.0
  0.328138  keyboard     599.682416    0.0
  0.436333  person       599.682416    0.0

下一步我可以尝试什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 00:32:24

如下所示更改您的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    df = []

    # Process video/segment level label annotations
    segment_labels = result.annotation_results[0].segment_label_annotations
    for i, segment_label in enumerate(segment_labels):
        print('Video label description: {}'.format(
            segment_label.entity.description))
        label_row = {} # Create a dictionary for the label
        for category_entity in segment_label.category_entities:
            print('\tLabel category description: {}'.format(
                category_entity.description))
            # Add the description
            label_row['Description'] = category_entity.description

        for i, segment in enumerate(segment_label.segments):
            start_time = (segment.segment.start_time_offset.seconds +
                          segment.segment.start_time_offset.nanos / 1e9)
            end_time = (segment.segment.end_time_offset.seconds +
                        segment.segment.end_time_offset.nanos / 1e9)
            positions = '{}s to {}s'.format(start_time, end_time)
            confidence = segment.confidence
            row_segment_info = {'Confidence': segment.confidence, 'Start': start_time, 'End': end_time})
            # Add the segment info for this row
            label_row.update(row_segment_info)
            df.append(label_row) # Now add the row
            print('\tSegment {}: {}'.format(i, positions))
            print('\tConfidence: {}'.format(confidence))
        print('\n')

总之:您在每个子循环中添加了行的列表。您只想添加一次行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57104050

复制
相关文章
Rust:从嵌套循环中退出
在C语言中,我们常用goto语句来在错误条件下跳转到函数的数据清理部分。这种用法的好处尤其体现在“错误发生在嵌套循环”的时候,我们不用每一层循环都加一个标志位,逐级退出。
灯珑LoGin
2022/11/16
1.4K0
for循环的嵌套
for循环: 嵌套循环:
大当家
2018/06/28
3.4K0
PHP | 条件嵌套、循环嵌套、条件循环相嵌套
demo: 假设在发3月工资的时候,不仅判定性别,还要判定男性是否有房,没有房,可以发放住房补贴,对于女性,判定是否怀孕,怀孕还有怀孕补贴:
凌川江雪
2019/03/08
4.2K0
JS循环-for循环嵌套
打印5行5列星星 效果图 代码 // 打印出5行5列的星星 for(i = 1 ; i <= 5 ; i ++ ) { // 外层控制打印行 for(j = 1 ; j <= 5 ; j ++ ) { // 内层控制每行打印几个 document.write('⭐') } document.write('<br>')
且陶陶
2023/04/12
19.1K0
JS循环-for循环嵌套
循环嵌套
三种循环虽然可以完成同样的功能,但我们在使用的时候,还是会按一定的优先级来推荐使用。
星哥玩云
2022/09/14
1.5K0
循环嵌套
嵌套循环的优化
今天拿到这样一个需求:有Map A和Map B,这两个Map都持有着一个同样的key——id,其对应的value可能相同,也可能不相同。现在需要对两个Map中该key对应的value相同的键值对做些特殊的操作。
雨临Lewis
2022/01/11
2.4K0
【Python】循环语句 ② ( while 嵌套循环 | 代码示例 - while 嵌套循环 )
while 嵌套循环 也是基于 空格缩进 , Python 中基于 空格缩进 判定代码逻辑的层次关系 ;
韩曙亮
2023/10/11
4160
【Python】循环语句 ② ( while 嵌套循环 | 代码示例 - while 嵌套循环 )
while循环嵌套while循环
《代码大全》推荐先用伪代码来写框架,从最上层思考可以将抽象能力最大化,不会先陷入任何编程语言的实现细节中,通俗地说就是在蓝图层面解决问题。
不会飞的小鸟
2021/07/30
3.5K0
Python 循环嵌套
for iterating_var in sequence: for iterating_var in sequence: statements(s) statements(s)
用户8442333
2021/05/27
1.8K0
性能优化-多层嵌套for循环如何优化
代码示例 package com.cwl.po; /** * @program: cwl-performance-optimization * @description: 测试for循环-嵌套循环 * @author: ChenWenLong * @create: 2019-11-22 11:27 **/ public class TestNestedLoop { // 当需要嵌套循环时 外层循环越小 性能越好 // 例如 10*100*1000 与 1000*100*10
cwl_java
2019/11/29
3.5K0
Python 循环嵌套
文 | 云豆 来源 | 菜鸟教程 云豆贴心提醒,本文阅读时间3分钟,文末有秘密! Python 语言允许在一个循环体里面嵌入另一个循环。 Python for 循环嵌套语法: Python w
小小科
2018/05/04
2.2K0
Python 循环嵌套
Python 嵌套for循环
嵌套for循环 for循环中的for循环 代码 # coding:utf-8 a = [1, 2, 3] b = [4, 5, 6] for i in a: print(i) print('------') for j in b: print(i + j) print('=======') print(i, j)
Zkeq
2022/05/18
1.5K0
Java中for循环嵌套以及循环的中断
很多初学者到for循环这里就学不会了,今天,我来讲解一下for循环以及嵌套循环,还有中断。
用户7886150
2020/12/03
6.2K0
第18讲 for循环优化:嵌套的for循环
ug902(v2018.1) High-Level Synthesis User Guide page 313 - page 321
Lauren的FPGA
2019/10/31
1.5K0
Python编程 for嵌套循环
在 while 循环中,拥有 break 与 continue 语句,那 for 循环中也有 break 与 continue 语句,并且作用一致。
网络豆
2023/10/15
1900
Python编程 for嵌套循环
PandasGUI:使用图形用户界面分析 Pandas 数据帧
数据预处理是数据科学管道的重要组成部分,需要找出数据中的各种不规则性,操作您的特征等。Pandas 是我们经常使用的一种工具,用于处理数据,还有 seaborn 和 matplotlib用于数据可视化。PandasGUI 是一个库,通过提供可用于制作
润森
2022/09/22
3.9K0
PandasGUI:使用图形用户界面分析 Pandas 数据帧
C++循环嵌套
循环的嵌套就是,一个循环体内又包含了另一个完整的循环结构;内嵌的循环中还可以嵌套循环,这就是多层循环。
小林C语言
2020/11/30
1.6K0
C++循环嵌套
C# Repeater嵌套循环[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159112.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
1.1K0
python for循环多个参数处理_python for循环嵌套
实际上,“使用for循环遍历数组的最简单方法”(Python类型被命名为“list”BTW)是第二种方法,即for item in somelist:
全栈程序员站长
2022/09/22
2.3K0
点击加载更多

相似问题

使用Pandas从循环中构建数据帧

34

Python嵌套循环pandas数据帧

111

嵌套for循环和pandas数据帧

125

从Pandas数据帧创建docx文件的嵌套循环

18

嵌套的For循环访问MultiIndex Pandas数据帧

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文