2017-05-30 64 views
1

我有以下的(樣本)數據幀:通過附加元件的單一行成熊貓數據幀

 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索引,然後重新設置它。醜陋。必須是更好的方法。

在此先感謝。

回答

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 
+0

我不知道可以這樣做。我沒有意識到你可以使用df.loc來創建一個新的索引條目。謝謝。 – Windstorm1981

+0

感謝,不僅可以做到這一點,它比爲每一行創建一個df和使用append效率更高。查看編輯 – Vaishali

+0

非常醜陋的項目需要整合,評估,更改各種SQL數據,需要添加和刪除各種元素,並且需要將結果寫回到各種數據庫的各種表中。 – Windstorm1981

2

這裏的另一個使用append的方式。在指定index時,不要傳遞字典,而要傳遞數據幀(使用字典創建):

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

偉大的解決方案。謝謝。 – Windstorm1981

+0

@ Windstorm1981 - 很好用!在下面的A-Za-z的評論中,我不建議爲每個條目建立一個'dataframe'。我會分別構建數據字典和索引,並創建一次數據框以追加。 –