将列表到字典的列表解析为DataFram时忽略错误

2024-04-23 15:06:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如何告诉熊猫忽略列表中不正确的字典项

为了简单起见,如果我有前一个问题的第1版解决方案:

L =[['Manufacturer: Hyundai',
  'Model: Tucson',
  'Mileage: 258000 km',
  'Registered: 07/2019'],
 ['Manufacturer: Mazda',
  'Model: 6',
  'Year: 2014',
  'Registered: 07/2019',
  'Comfort',
  'Safety']]

df = pd.DataFrame([dict(y.split(':') for y in x) for x in L])
print (df)

第二个dict项有最后两个缺少值的项(“舒适”和“安全”),但它们也缺少“:”因此熊猫抛出:

ValueError: dictionary update sequence element #5 has length 1; 2 is required

如何告诉熊猫忽略这些类型的错误并继续解析列表


Tags: indf列表formodel字典解决方案dict
2条回答

只需添加一点if条件

pd.DataFrame([
    dict(y.split(':') for y in x if ':' in y) for x in L])

  Manufacturer     Mileage    Model Registered   Year
0      Hyundai   258000 km   Tucson    07/2019    NaN
1        Mazda         NaN        6    07/2019   2014

如果您想将这些值包含为NaN,那么将理解中的if改为if-else

pd.DataFrame([
    dict(y.split(':') if ':' in y else (y, np.nan) for y in x) for x in L])


   Comfort Manufacturer     Mileage    Model Registered  Safety   Year
0      NaN      Hyundai   258000 km   Tucson    07/2019     NaN    NaN
1      NaN        Mazda         NaN        6    07/2019     NaN   2014

如果没有:的值是键,则可以添加if-else

df = pd.DataFrame([dict(y.split(':') if ':' in y else (y, np.nan) for y in x) for x in L])
print (df)
       Comfort Manufacturer     Mileage    Model Registered  Safety   Year
0      NaN      Hyundai   258000 km   Tucson    07/2019     NaN    NaN
1      NaN        Mazda         NaN        6    07/2019     NaN   2014

相关问题 更多 >