【问题标题】:Fill with default 0's when creating a DataFrame in Pandas在 Pandas 中创建 DataFrame 时填充默认值 0
【发布时间】:2019-02-13 04:35:38
【问题描述】:

我有一个输入 dict-of-string-to-list ,列表的长度可能不同。

d = {'b': [2,3], 'a': [1]}

当我这样做时:df = pd.DataFrame(data=d), 我看到 ValueError: arrays must be all the same length

问题:如何在创建 df 时使用默认值(例如 0)填充缺失值?


创建df的原因是为了得到最终结果: {'b': 3}

3 是列表中所有数字的最大值。

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

您可以使用DataFrame.from_dictorient 设置为index,以便将字典的键用作索引,并将缺失值设置为NaN。然后只需使用.fillna 填充NaNs 并转置以将键设置为列:

pd.DataFrame.from_dict(d, orient='index').fillna(0).T

    b    a
0  2.0  1.0
1  3.0  0.0

【讨论】:

    【解决方案2】:
    d = {'b': [2,3], 'a': [1]}
    df = pd.DataFrame({ k:pd.Series(v) for k, v in d.items() })
    

    这将给出以下输出。

    a  b
    0  1.0  2
    1  NaN  3
    

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 1970-01-01
      • 2019-04-26
      • 2012-11-26
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多