2017-07-24 41 views
3

我想知道是否有一種方法來保存熊貓dataframe數據類型後,我切片的數據。熊貓DataFrame拼接結果成爲系列

例如,如果我有一個名爲df的pandas DataFrame包含多個列,當我切分一列時,它不再是一個DataFrame,而是一個系列。有沒有辦法將它保留爲數據框?

我的意思是,

type(df) 
pandas.core.frame.DataFrame 

type(df.iloc[:,0]) 
pandas.core.series.Series 

只有這樣,我想獲得的周圍是明確地重新定義它爲數據幀。

pd.DataFrame(df.iloc[:,0]) 
+0

您還可以檢查此鏈接https://stackoverflow.com/questions/26047209/what-is熊貓之間的差異 - 系列和單列數據框 – Wen

+0

@Wen謝謝!這闡明瞭爲什麼數據幀成爲系列 –

+0

很高興幫助。 〜 – Wen

回答

2

確實存在:

type(df.iloc[:,[0]]) 

傳遞到自己的列/返回一個列表和數據幀列。你可以看到區別:

In [288]: df = pd.DataFrame({0 : [1, 2, 3], 1: [3, 4, 5], 2:[4, 5, 6]}); df 
Out[288]: 
    0 1 2 
0 1 3 4 
1 2 4 5 
2 3 5 6 

In [289]: df.iloc[:, 0] 
Out[289]: 
0 1 
1 2 
2 3 
Name: 0, dtype: int64 

In [290]: df.iloc[:, [0]] 
Out[290]: 
    0 
0 1 
1 2 
2 3 

In [291]: type(df.iloc[:, [0]]) 
Out[291]: pandas.core.frame.DataFrame 
+1

哇謝謝!這種簡單的解決方案。很多appriciated –

+0

@pandas_get_good請考慮upvoting PiRSquared的回答:) –

+0

@cᴏʟᴅsᴘᴇᴇᴅ認爲它完成了! –

2

我喜歡COLDSPEED的答案,但是這是一種替代方法

df.iloc[:, 0].to_frame() 

    0 
0 1 
1 2 
2 3 
+0

這很好,不知道這個! –

+0

謝謝@piRSquared! –