【问题标题】:ValueError: arrays must all be same length while converting dictionary to data frameValueError:将字典转换为数据框时,数组的长度必须相同
【发布时间】:2020-11-20 08:00:31
【问题描述】:

将字典转换为 pd.dataframe 时出现错误

a = {
  'var1': [
    'LPES',
    'A'
  ],
  'var2': [
    'F',
    'D'
  ],
  'var3': [
    'R',
    'T',
    'EDUCATION',
    'A',
    'B',
    ''
  ],
  'var4': [
    'HI',
    'HI',
    ''
  ],
  'var5': [
    'PP',
    'CCM',
    'PP',
    ''
  ],
  'var6': [
    'C',
    ''
  ]
}

pd.DataFrame(a)

ValueError: 数组的长度必须相同

键是行值,值是它的值,列标题可以是任何值

预计是

var1 LPES
var1 A
var2 F
var2 D
..   .
..   .

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    DataFrame.from_dictorient='index' 一起使用:

    df = pd.DataFrame.from_dict(a, orient='index')
    print (df)
             0    1          2     3     4     5
    var1  LPES    A       None  None  None  None
    var2     F    D       None  None  None  None
    var3     R    T  EDUCATION     A     B      
    var4    HI   HI             None  None  None
    var5    PP  CCM         PP        None  None
    var6     C            None  None  None  None
    

    如果需要 2 列 DataFrame 对元组列表使用扁平列表理解:

    df = pd.DataFrame([(k, x) for k, v in a.items() for x in v], columns=['a','b'])
    print (df)
           a          b
    0   var1       LPES
    1   var1          A
    2   var2          F
    3   var2          D
    4   var3          R
    5   var3          T
    6   var3  EDUCATION
    7   var3          A
    8   var3          B
    9   var3           
    10  var4         HI
    11  var4         HI
    12  var4           
    13  var5         PP
    14  var5        CCM
    15  var5         PP
    16  var5           
    17  var6          C
    18  var6           
    

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 2022-01-06
      相关资源
      最近更新 更多