用常量初始化数据帧

a-a*_*a-a 3 python initialization dataframe pandas

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

pd.DataFrame(0, index=[1,2,3])      # doesnt work!
    # OR
pd.DataFrame(0)                     # doesnt work!
Run Code Online (Sandbox Code Playgroud)

而我观察到

(1)使用常数初始化Series

pd.Series(0, index=[1,2,3])         # Works fine!
Run Code Online (Sandbox Code Playgroud)

(2)使用None初始化DataFrame是可行的

pd.DataFrame(None, index=[1,2,3])   # Works fine!
Run Code Online (Sandbox Code Playgroud)

(3)在不提供索引和列的情况下初始化DataFrame

pd.DataFrame([1, 2, 3])             # Works fine!
pd.DataFrame([0])                   # Works fine!
Run Code Online (Sandbox Code Playgroud)

有人知道为什么吗?

我希望从设计考虑中了解更多信息,而不是像“如果您检查熊猫代码,您会发现它未能通过其中一项数据尺寸应大于1.的检查”之类的答案,就会知道更多信息。 。

我认为它应该只是直观地工作(考虑到熊猫在不提供默认col和index的情况下很聪明,还可以从给定的数据中猜测尺寸)。

可能有某种原因导致此行为,但无法确定。

piR*_*red 8

A pd.DataFrame是二维的。当您指定

pd.DataFrame(0, index=[1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

你告诉构造函数分配0到每一行与索引123。但是,什么列?您没有定义任何列。

你可以做两件事

选项1
指定您的栏

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

   x  y
1  0  0
2  0  0
3  0  0
Run Code Online (Sandbox Code Playgroud)

选项2
传递值列表

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

   0
1  0
2  0
3  0
Run Code Online (Sandbox Code Playgroud)