【问题标题】:Append a Single Line by Elements into a Pandas Dataframe将单行按元素附加到 Pandas 数据框中
【发布时间】:2017-10-31 07:22:49
【问题描述】:

我有以下(示例)数据框:

      Age   height  weight  haircolor
joe    35    5.5      145     brown
mary   26    5.25     110     blonde
pete   44    6.02     185     red
....

索引中没有重复值。

我处于不得不使用来自许多其他数据帧的元素附加到这个数据帧的令人羡慕的位置。所以我追加如下:

names_df = names_df.append({'Age': someage, 
                            'height': someheight, 
                            'weight':someweight, 
                            'haircolor': somehaircolor'}, 
                             ignore_index=True)

我的问题是使用此方法如何将 names_df 中的新索引值设置为等于人名?

我唯一能想到的就是在追加之前重置 df 索引,然后再重新设置它。丑陋的。必须是更好的方法。

提前致谢。

【问题讨论】:

    标签: python pandas indexing append


    【解决方案1】:

    我不确定您以什么格式获取附加到原始 df 的数据,但一种方法如下:

    df.loc['new_name', :] = ['someage', 'someheight', 'someweight', 'somehaircolor']
    
    
                Age     height      weight      haircolor
    joe         35      5.5         145         brown
    mary        26      5.25        110         blonde
    pete        44      6.02        185         red
    new_name    someage someheight  someweight  somehaircolor
    

    时间测试:

    %timeit df.loc['new_name', :] = ['someage', 'someheight', 'someweight', 'somehaircolor']
    
    1000 loops, best of 3: 408 µs per loop
    
    %timeit df.append(pd.DataFrame({'Age': 'someage', 'height': 'someheight','weight':'someweight','haircolor': 'somehaircolor'}, index=['some_person']))
    
    100 loops, best of 3: 2.59 ms per loop
    

    【讨论】:

    • 我不知道可以这样做。我没有意识到您可以使用 df.loc 以这种方式创建一个新的索引条目。谢谢。
    • 谢谢,不仅可以做到,而且比为每一行创建一个df并使用append要高效得多。查看编辑
    • 很丑的项目,SQL数据来自各地,必须整合,评估,更改,需要添加和删除各种元素,需要将结果写回各种数据库中的各种表.
    【解决方案2】:

    这是使用追加的另一种方式。在指定index 的同时传递数据框(使用字典创建),而不是传递字典:

    names_df = names_df.append(pd.DataFrame({'Age': 'someage',
                                'height': 'someheight',
                                'weight':'someweight',
                                'haircolor': 'somehaircolor'}, index=['some_person']))
    

    【讨论】:

    • 很好的解决方案。谢谢。
    • @Windstorm1981 - 很高兴它有效!在下面添加 A-Za-z 的评论后,我不建议为每个条目构建 dataframe。我会分别建立您的数据字典和索引,并创建一次数据框以追加。
    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 2019-04-01
    • 2019-11-06
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多