希望您能提供帮助。几周前,您确实为嵌套数组方面的类似问题提供了巨大帮助。 今天,我遇到了类似的问题,并且已经尝试了下面此链接中提供的所有解决方案,
Iterate over pandas dataframe columns containing nested arrays
我的数据是一个包含描述点的ORB向量。它返回一个列表。当我将List转换为数组时,得到此输出
data=np.asarray([['Test /file0090',
np.asarray([[ 84, 55, 189],
[248, 100, 18],
[ 68, 0, 88]])],
['aa file6565',
np.asarray([[ 86, 58, 189],
[24, 10, 118],
[ 68, 11, 0]])],
['aa filejjhgjgj',
None],
['Test /file0088',
np.asarray([[ 54, 58, 787],
[ 4, 1, 18 ],
[ 8, 1, 0 ]])]])
这个小样本,真实数据是一个800.000 x 2的数组 有些图像不返回任何描述符点,并且值显示为“无
在下面的示例中,我刚刚选择了2行,其中“ None”的值位于
array([['/00cbbc837d340fa163d11e169fbdb952.jpg',
None],
['/078b35be31e8ac99b0cbb817dab4c23f.jpg',
None]], dtype=object)
再一次,我需要在nx4中获得此值(在这种情况下,我们有4个变量,但是我的真实数据中有33个变量)这种情况:
col0, Col1, Col2, col3,
Test /file0090 84, 55, 189
Test /file0090 248, 100, 18
Test /file0090 84, 55, 189
'aa file6565' 86, 58, 189
'aa file6565' 24, 10, 118
'aa file6565' 68, 11, 0
'aa filejjhgjgj' 0 0 0
'Test /file0088 54, 58, 787
'Test /file0088 4, 1, 18
'Test /file0088 8, 1, 0
链接中提供的解决方案的问题是,当我们在数组中返回此“ None”值时,它将返回
ufunc 'add' did not contain a loop with signature matching types (dtype('<U21'), dtype('<U21')) -> dtype('<U21')
如果有人可以帮助我解决这个问题
答案 0 :(得分:1)
您可以使用df.fillna('')
来修改@anky答案以处理空值:
df = pd.DataFrame(data).add_prefix('col')
df = df.fillna('').explode('col1').reset_index(drop=True)
df = df.join(pd.DataFrame(df.pop('col1').tolist()).add_prefix('Col')).fillna(0)
返回
col0 Col0 Col1 Col2
Test /file0090 84.0 55.0 189.0
Test /file0090 248.0 100.0 18.0
Test /file0090 68.0 0.0 88.0
aa file6565 86.0 58.0 189.0
aa file6565 24.0 10.0 118.0
aa file6565 68.0 11.0 0.0
aa filejjhgjgj 0.0 0.0 0.0
Test /file0088 54.0 58.0 787.0
Test /file0088 4.0 1.0 18.0
Test /file0088 8.0 1.0 0.0