按元素将单行附加到Pandas Dataframe中

时间:2017-05-30 17:43:47

标签: python pandas indexing append

我有以下(样本)数据框:

      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索引然后重新设置它。丑陋。必须是一个更好的方式。

提前致谢。

2 个答案:

答案 0 :(得分:3)

我不确定您将采用何种格式获取附加到原始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

答案 1 :(得分:2)

这是使用追加的另一种方式。在指定index

时传递数据框(使用字典创建)而不是传递字典
names_df = names_df.append(pd.DataFrame({'Age': 'someage',
                            'height': 'someheight',
                            'weight':'someweight',
                            'haircolor': 'somehaircolor'}, index=['some_person']))