【问题标题】:Dynamically Add Rows to DataFrame将行动态添加到 DataFrame
【发布时间】:2018-06-10 08:26:33
【问题描述】:

假设我有一个空数据框,已经设置了列,但没有行。我正在从网络上抓取一些数据,所以假设我需要将索引 '2176' 添加到空数据框。当我尝试分配它时,如何自动将此行添加到数据库中?这甚至是熊猫的目的还是我应该使用其他东西?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    作为.loc 的替代方案,您可能需要考虑at。使用@NickBraunagel 的例子:

    df = pd.DataFrame(columns=['foo1','foo2'])
    

    然后

    df.at['2716', 'foo1'] = 10
    

    产量

         foo1 foo2
    2716   10  NaN
    

    时间完全不同:

    # @NickBraunagel's solution
    %timeit df.loc['2716', 'foo1'] = 10
    1000 loops, best of 3: 212 µs per loop
    
    # the at solution
    %timeit df.at['2716', 'foo1'] = 10
    100000 loops, best of 3: 12.5 µs per loop
    

    如果你想同时添加多个列条目,你可以这样做:

    d = {'foo1': 20, 'foo2': 10}
    df.at['1234', :] = d
    

    屈服

         foo1 foo2
    2716   10  NaN
    1234   20   10
    

    但是,请确保始终添加相同的数据类型以避免错误或其他不良影响,如 here 所述。

    【讨论】:

    • 好电话,假设您一次只更新一个值/单元格(适用于本示例)。供参考:stackoverflow.com/a/37216587/4245462
    • @NickBraunagel:我想这个假设是有效的,因为 OP 谈论的是单行。感谢您的参考!
    【解决方案2】:
    import pandas as pd
    
    df = pd.DataFrame(columns=['foo1','foo2'])
    
    df.loc[2176,'foo1'] = 'my_value'
    

    df 是:

            foo1        foo2
    2176    my_value    NaN
    
    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 2018-07-07
    • 2011-10-05
    • 2013-12-17
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多