如何将数据框中的一列转换为python中的2D数组

时间:2019-04-13 01:55:51

标签: python pandas numpy dataframe

我有一个数据框,其中包含以下观察到的数据:

public function search(Request $request)
{
    if($request->ajax()) {
        $output="";
        $products=DB::table('products')->where('title','LIKE','%'.$request->search."%")->get();
        if($products) {
            foreach ($products as $key => $product) {
                $output.='<tr>'.
                  '<td>'.$product->id.'</td>'.
                  '<td>'.$product->title.'</td>'.
                  '<td>'.$product->description.'</td>'.
                  '<td>'.$product->price.'</td>'.
                '</tr>';
            }
            return Response($output);
        }
    }
}

如何从值中获取数组以形成2D import pandas as pd d = {'ID': [0,1,2], 'Value': [[1,2,1],[5,4,6],[7,20,9]]} df = pd.DataFrame(data=d)

numpy.ndarray

形状:(3,3)

我尝试

 [[1, 2, 1],
 [5, 4, 6],
 [7, 20, 9]]

但是它给了我

print(df['Value'].values)

这不是我想要的

1 个答案:

答案 0 :(得分:2)

您可以提取列列表,然后使用以下两种方法进行数组化。

np.array(df['Value'].tolist())

array([[ 1,  2,  1],
       [ 5,  4,  6],
       [ 7, 20,  9]])

# np.vstack(df['Value'])
np.stack(df['Value'])

array([[ 1,  2,  1],
       [ 5,  4,  6],
       [ 7, 20,  9]])

如果列表大小不均,则会返回一个常规的2D数组,其中nans缺少位置。

df['Value'] = [[1, 2], [3], [4, 5, 6]]
df

   ID      Value
0   0     [1, 2]
1   1        [3]
2   2  [4, 5, 6]

# pd.DataFrame(df['Value'].tolist()).values   #  < v0.24
pd.DataFrame(df['Value'].tolist()).to_numpy() #  v0.24+

array([[ 1.,  2., nan],
       [ 3., nan, nan],
       [ 4.,  5.,  6.]])