2017-07-24 40 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! –