pandas获取多索引更改的整数索引

时间:2016-03-25 01:14:11

标签: python pandas

我有一个非常大的数据帧和多索引。我需要将一列传递给C以快速执行操作。对于此操作,我需要知道multiindex更改值的位置。由于这是一个大型数据帧,我不想迭代python中的行或索引。 一个小例子:

import numpy as np
import pandas as pd
a = np.array([['bar', 'one', 0, 0],
       ['bar', 'two', 1, 2],
       ['bar', 'one', 2, 4],
       ['bar', 'two', 3, 6],
       ['foo', 'one', 4, 8],
       ['foo', 'two', 5, 10],
       ['bar', 'one', 6, 12],
       ['bar', 'two', 7, 14]], dtype=object)
df = pd.DataFrame(a, columns=['ix0', 'ix1', 'cd0', 'cd1'])
df.sort_values(['ix0', 'ix1'], inplace=True)
df.set_index(['ix0', 'ix1'], inplace=True)

数据框如下所示:

In [7]: df
Out[7]: 
        cd0 cd1
ix0 ix1        
bar one   0   0
    one   2   4
    one   6  12
    two   1   2
    two   3   6
    two   7  14
foo one   4   8
    two   5  10

现在我想要一个数组或列表,显示多索引中值的变化。即,(bar,one)变为(bar,two),(bar,two)的整数索引变为(foo,one)等。

为了能够构建分层输出,似乎这些数据必须存在于索引中。有没有办法达到目的?

我要寻找的示例输出是:[0,3,6,7]。

由于

1 个答案:

答案 0 :(得分:1)

您可以将class CartController extends Controller { private $cartArray = array(); public function addToCartAction(Request $request, $id) { // ... else { // Set the property here $this->cartArray[$product->getId()] = [$product->getName(), $product->getPrice()]; } // ... } // ... public function showCartAction(Request $request) { return array( 'user' => $user, 'cartArray' => $this->cartArray, // Access the array here 'totalCostOfAllProducts' => $totalCostOfAllProducts, ); } } np.unique

一起使用
return_index=True