2017-08-24 54 views
0

由於某些原因,當我嘗試從列表中創建一個數據框(稱爲system_mean)時,該列表中有288個條目,數據框形狀爲(1,288),但是當我從虛擬列表中創建一個數據框,其中3個條目的數據框形狀爲(3,1)。我正在嘗試將system_mean數據框添加到其形狀爲(288,15)的另一個數據框,因此它必須具有相同的形狀。從列表中創建一個有1列和n行的DateFrame

import pd 
L = ['Thanks You', 'Its fine no problem', 'Are you sure'] 
df3 = pd.DataFrame(L) 

system_mean = [Final_Price.mean(axis=1)] 
df2 = pd.DataFrame(system_mean) 

note; Final_Price是一個數據幀,其形狀是(288,15),我正在取每行的平均值。所以Final_Price.mean(axis = 1)返回一個包含288個條目的列表。

爲什麼相同的命令返回列表中的列表爲一個列表,並將其返回到另一個列表的行中?

+0

我能想到的唯一的事情是列表L在終端打印時是水平的,而system_mean是垂直打印的,因爲它有一個時間戳索引。如果這是問題,我該如何解決它? –

+0

你把'system_mean dataframe添加到另一個數據框'是什麼意思?在單元格中添加每個數據或連接?如果要添加每個單元格,則形狀需要完全相同。 –

+0

我將(288,1)數據框連接到(288,15)數據框的末尾。謝謝你帶來 –

回答

1

Final_Price.mean(axis=1)不是一個列表,而是一個熊貓系列。通過做[Final_Price.mean(axis=1)]你把它放在一個列表中,這就是導致DataFrame水平的原因。

比較如下:

L = pd.Series(['Thanks You', 'Its fine no problem', 'Are you sure']) 

pd.DataFrame(L) 
Out: 
        0 
0   Thanks You 
1 Its fine no problem 
2   Are you sure 

pd.DataFrame([L]) 
Out: 
      0     1    2 
0 Thanks You Its fine no problem Are you sure 

所以,你可以通過去掉括號解決這個問題,或者您也可以使用Final_Price.mean(axis=1).to_frame('name_of_the_column)。

+0

謝謝,認爲這可能是愚蠢的東西 –