熊猫数据框的set_index到浮点列表?

时间:2019-01-27 19:35:34

标签: python pandas indexing

我有一个主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)

1 个答案:

答案 0 :(得分:0)

问题是DataFrame.reset_index(keys=keys)要求keys的类型为SeriesIndexnumpy.ndarraylink 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)