【问题标题】:Ignoring errors while parsing list of lists to dictionary to pandas DataFrame将列表列表解析为字典到熊猫 DataFrame 时忽略错误
【发布时间】:2019-05-06 23:35:46
【问题描述】:

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

为简单起见,如果我有来自上一个问题的第一版解决方案的案例:

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 项有 2 个最后一项缺少值('Comfort' 和 'Safety'),但它们也缺少“:”,因此 pandas 正在抛出:

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

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

【问题讨论】:

  • 对不起,我想我在某处读到,如果它是相关的,最好链接其他问题。谢谢你们俩的精彩回答@jezrael

标签: python python-3.x pandas dictionary dataframe


【解决方案1】:

只需添加一点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

【讨论】:

    【解决方案2】:

    如果没有: 的值是键,则可以添加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
    

    【讨论】:

    • 嗯,if-else 仅在此示例中是必需的,因为“舒适”和“安全”实际上不在任何行中。
    • @coldspeed - 是的,同意,不是 100% 确定是否了解是否有必要增加价值或删除
    猜你喜欢
    • 2019-05-02
    • 2019-08-20
    • 2018-04-19
    • 1970-01-01
    • 2019-12-13
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多