代码之家  ›  专栏  ›  技术社区  ›  Peter Chen

在for循环中合并dict

  •  0
  • Peter Chen  · 技术社区  · 6 年前

    我想用for循环创建一个新的数据帧。

    for (name, series) in Quantitative.iteritems():
    data = {'Name': pd.Series(name), 'Count': pd.Series(Quantitative[name].size), 
            '% Miss.': pd.Series((sum(Quantitative[name].isnull().values.ravel()) / Quantitative[name].size) * 100), 
            'Card.': pd.Series(Quantitative[name].unique().size), 'Min': pd.Series(Quantitative[name].min()), 
            '1st Qrt.': pd.Series(Quantitative[name].quantile(0.25)), 'Mean': pd.Series(Quantitative[name].mean()), 
            'Median': pd.Series(Quantitative[name].median()), '3rd Qrt.': pd.Series(Quantitative[name].quantile(0.75)), 
            'Max': pd.Series(Quantitative[name].max()), 'Std.': pd.Series(Quantitative[name].std())}
    dt = pd.DataFrame(data)
    print(pd.DataFrame(dt))
    

    1 回复  |  直到 6 年前
        1
  •  2
  •   Grigoriy Mikhalkin    6 年前

    您不需要为dict中的每个项创建数据帧,然后合并它们。使用列表理解创建行列表并从中创建数据帧:

    rows = [[
        name, series.size, (sum(series.isnull().values.ravel()) / series.size) * 100, 
        series.unique().size, series.min(), series.quantile(0.25), series.mean(), 
        series.median(), series.quantile(0.75), series.max(), series.std()
    ] for name, series in Quantitative.iteritems()]
    
    dt = pd.DataFrame(
        rows, 
        columns=['Name', 'Count', '% Miss.', 'Card.', 'Min', '1st Qrt.',
                 'Mean', 'Median', '3rd Qrt.', 'Max', 'Std.'])
    print(dt)