我有一个数据框,其中包含以下观察到的数据:
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)
这不是我想要的
答案 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.]])