我有一个主DF,然后有一个要插入主DF的两行之间的子DF。所以第一个DF的索引是...,183,184,185,186,187 ... 我想在主DF的行185和186之间插入五行DF。
为此,我试图将子DF的索引设置为185至186之间的数字,然后重新索引,但是在第一行出现了关键错误。
索引列表是[185.01、185.02、185.03、185.04、185.05]。错误为“ KeyError:185.01”
基于以下线程,我认为这应该可行:Is it possible to insert a row at an arbitrary position in a dataframe using pandas?
# reset then set index for inserting these rows after the rest of the items for this subtest
row_index.clear()
row_index = [round((last_subtest_item_index + 0.01) + (x * 0.01),2) for x in range(0, var_counter)]
print(last_subtest_item_index, row_index)
print(new_custom_table)
# TRY TO INSERT THE CUSTOM TABLE DF INTO THE MAIN DF AND SEE IF IT GOES IN-LINE WITH THE REST OF THAT CRF
new_custom_table.set_index(keys = row_index, inplace = True)
self.full_CRF = self.full_CRF.append(new_custom_table, ignore_index = False).sort_index().reset_index(drop=True)
答案 0 :(得分:0)
问题是DataFrame.reset_index(keys=keys)
要求keys
的类型为Series
,Index
或numpy.ndarray
(link to docs),但是您正在为其提供python列表row_index
。解决方法是将列表包装在numpy array
构造函数中。
替换此行:
new_custom_table.set_index(keys = row_index, inplace = True)
与此:
new_custom_table.set_index(keys=pd.np.array(row_index), inplace=True)