使用常量值初始化数据框不起作用,
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和索引是明智的,并且还根据给定的数据猜测尺寸)。
这种行为可能有某些原因,但无法确定。
答案 0 :(得分:7)
pd.DataFrame
是二维的。指定时
pd.DataFrame(0, index=[1, 2, 3])
您告诉构造函数将0
分配给索引为1
,2
和3
的每一行。但是列是什么?您没有定义任何列。
你可以做两件事
选项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