我是从yml文件中获取数据的,因此可以得到两个列表,如下所示:
其中一个名为list_products的列表包含产品名称:
['ABCD'
'LTAP'
'DEFG'
'FFEE']
另一个名为list_ids,包含一个ID列表,有时该元素可以是一个列表:
[[100, 200],
[3333],
[1500,99, 870],
[2]]
当仅使用list_ids时,我可以得到一个数据框,这是我使用的代码:
flat_list = [item for sublist in list_ids for item in sublist]
id_df = pd.DataFrame(flat_list,columns=['id'])
结果是:
id
100
200
3333
1500
99
870
2
现在,我也想要一个带有产品名称的数据框。我想得到这个:
id name
100 'ABCD'
200 'ABCD'
3333 'LTAP'
1500 'DEFG'
99 'DEFG'
870 'DEFG'
2 'FFEE'
您可以使用预处理数据,zip
然后构建DF
names = ['ABCD', 'LTAP', 'DEFG', 'FFEE']
list_ids = [[100, 200], [3333], [1500, 99, 870], [2]]
flat_list = [(item, name) for sublist, name in zip(list_ids, names) for item in sublist]
id_df = pd.DataFrame(flat_list, columns=['id', 'name'])
中级flat_list
是
flat_list > [(100, 'ABCD'), (200, 'ABCD'), (3333, 'LTAP'), ...
或使用原始数据构建df,然后使用 explode
id_df = pd.DataFrame({'id': list_ids, 'name': names}).explode('id')
中级pd.DataFrame({'id': list_ids, 'name': names}
是
id name
0 [100, 200] ABCD
1 [3333] LTAP
2 [1500, 99, 870] DEFG
3 [2] FFEE
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句