我有以下(样本)数据框:
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索引然后重新设置它。丑陋。必须是一个更好的方式。
提前致谢。
答案 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']))