plempty列表导致pd.dataframe()返回任何行

import pandas as pd
pd.DataFrame({'genre': 'Pop',
 'country': 'CA',
 'artist_name': 'Olivia Rodrigo',
 'title_name': 'good 4 u',
 'release_date': '2021-05-13',
 'core_genre': 'Pop',
 'metrics': [],
 'week_id': 202101,
 'top_isrc': 'USUG12101245'})

返回列名但否则为空的dataframe,并且由于空列表而发生这种情况metrics:.这是一个问题。如果此此返回1行数据帧,则会更好地使用空列表metricsColumn。

enter image description here

没有缺少度量标准的数据的示例:

{'genre': 'Pop',
 'country': 'CA',
 'artist_name': 'Olivia Rodrigo',
 'title_name': 'drivers license',
 'release_date': '2021-01-07',
 'core_genre': 'Pop',
 'metrics': [{'name': 'Song w/SES On-Demand',
   'value': [{'name': 'tp', 'value': 1},
    {'name': 'lp', 'value': 0},
    {'name': 'ytd', 'value': 1},
    {'name': 'atd', 'value': 1}]},
  {'name': 'Song w/SES On-Demand Audio',
   'value': [{'name': 'tp', 'value': 0},
    {'name': 'lp', 'value': 0},
    {'name': 'ytd', 'value': 0},
    {'name': 'atd', 'value': 0}]},
  {'name': 'Streaming On-Demand Total',
   'value': [{'name': 'tp', 'value': 414},
    {'name': 'lp', 'value': 0},
    {'name': 'ytd', 'value': 414},
    {'name': 'atd', 'value': 414}]},
  {'name': 'Streaming On-Demand Audio',
   'value': [{'name': 'tp', 'value': 69},
    {'name': 'lp', 'value': 0},
    {'name': 'ytd', 'value': 69},
    {'name': 'atd', 'value': 69}]}],
 'week_id': 202101,
 'top_isrc': 'USUG12004749'}

这是非常好的pd.DataFrame(),为列表中的4个嵌套选项中的每一个创建一行metrics.我假设是相同的原因,pd.dataframe()返回这个第二个例子上的4行(列表中的4个dicts),pd.dataframe()在上面的示例中返回0行(列表中的0个dicts)。然而,失落的数据行是一个问题。我们如何处理这个?

回答 1

  1. 赞同 3

    可以通过传递空列表列表来实现空列表:

    df = pd.DataFrame({'genre': 'Pop',
     'country': 'CA',
     'artist_name': 'Olivia Rodrigo',
     'title_name': 'good 4 u',
     'release_date': '2021-05-13',
     'core_genre': 'Pop',
     'metrics': [[]],
     'week_id': 202101,
     'top_isrc': 'USUG12101245'})
    

    Gives.

      genre country     artist_name title_name release_date core_genre metrics  week_id      top_isrc
    0   Pop      CA  Olivia Rodrigo   good 4 u   2021-05-13        Pop      []   202101  USUG12101245
    

    你可以制作一个空的dict列表[{}]Too。

    MET:

    刚刚指定单个列表的有趣返回一个空白行,但是我假设从Pandas的角度来看,它可能无法区分从一个是向量的单行值的行值的向量,而默认行为是显然,扔掉整个行?有趣的。

    peptidewitch
    makes sense. I think our desired output is actually an empty dictionary, although I assume we can replace the empty list with empty dict to get the same resultsCanovice
    是正确的 - 查看我的编辑评论:)peptidewitch
    这是非常有趣的。如果列表有2-3选项,则默认方法也是创建2-3行而不是单行的情况也有趣。Canovice