Pandas DataFrame 拼接结果变为 Series

4

我想知道在切片数据之后是否有一种方法可以保留pandas dataframe的数据类型。

例如,如果我有一个名为df的pandas DataFrame,其中包含多个列,当我切割一列时,它不再是DataFrame而是Series。有没有一种方法可以将其保留为DataFrame?

我的意思是

type(df)
pandas.core.frame.DataFrame

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

我想到了一个解决方法,就是明确将其重新定义为数据框。

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

您也可以查看此链接 https://dev59.com/d18e5IYBdhLWcg3wJXrm - BENY
@Wen 谢谢!这解释了为什么DataFrame会变成Series。 - pandas_get_good
2个回答

3
确实有:

确实存在:

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

2
我喜欢COLDSPEED的答案,但这是另一种方法。
df.iloc[:, 0].to_frame()

   0
0  1
1  2
2  3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接