在创建数据框时分配列名称会导致nan值

时间:2020-05-12 05:14:16

标签: python pandas dataframe

我有一个字典列表,该字典将被转换为数据框。当我尝试传递column参数时,输出值都是nan。

# This code does not result in desired output

l = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
pd.DataFrame(l, columns=['c', 'd'])

    c   d
0   NaN NaN
1   NaN NaN
# This code does result in desired output

l = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
df = pd.DataFrame(l)
df.columns = ['c', 'd']
df

    c   d
0   1   2
1   3   4

为什么会这样?

1 个答案:

答案 0 :(得分:8)

因为如果在checkboxSelection构造函数中创建了键的字典传递列表,则新的列名:

DataFrame

如果字典键中不存在某些值的传递列参数,则从字典中过滤出列,对于不存在的值,将创建缺少值的列,其值的顺序类似于列名列表中的值:

l = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
print (pd.DataFrame(l))
   a  b
0  1  2
1  3  4

因此,如果需要其他列名称,则需要重命名它们或像在第二个代码中那样设置一个新列。