使用常量初始化数据帧

时间:2017-07-26 04:07:12

标签: python pandas dataframe initialization

使用常量值初始化数据框不起作用,

pd.DataFrame(0, index=[1,2,3])      # doesnt work!
    # OR
pd.DataFrame(0)                     # doesnt work!

而我观察到了

  

(1)使用常量值初始化Series

pd.Series(0, index=[1,2,3])         # Works fine!
  

(2)使用None初始化DataFrame

pd.DataFrame(None, index=[1,2,3])   # Works fine!
  

(3)在未提供索引和列时初始化DataFrame

pd.DataFrame([1, 2, 3])             # Works fine!
pd.DataFrame([0])                   # Works fine!

有谁知道为什么?

我渴望从设计考虑中了解更多,而不是像#34;如果你检查一下pandas代码,你会发现它失败了一个检查数据维度预期的检查是> 1 ...等等等等等等。

我认为它应该直观地工作(考虑到pandas在未提供时分配默认col和索引是明智的,并且还根据给定的数据猜测尺寸)。

这种行为可能有某些原因,但无法确定。

1 个答案:

答案 0 :(得分:7)

pd.DataFrame是二维的。指定时

pd.DataFrame(0, index=[1, 2, 3])

您告诉构造函数将0分配给索引为123的每一行。但是列是什么?您没有定义任何列。

你可以做两件事

选项1
指定列

pd.DataFrame(0, index=[1, 2, 3], columns=['x', 'y'])

   x  y
1  0  0
2  0  0
3  0  0

选项2
传递值列表

pd.DataFrame([[0]], index=[1, 2, 3])

   0
1  0
2  0
3  0