让我们说我有一个数据框。有多个列(例如'A','B') 使用以下代码,我想基于一列创建一个新的数据框:
In [5] print type (df2)<class 'pandas.core.series.Series'>
然而,当我这样做时,数据框突然转换为TimeSeries
Facebook SDK v4.x
非常奇怪......任何人都可以向我解释为什么会发生这种情况......?
答案 0 :(得分:2)
df1['A']
会返回一个系列。 df1[['A']]
会返回一个DataFrame。
切片的行为会有所不同,具体取决于您在两者之间传递的对象类型 括号中。
如果使用字符串对DataFrame df
进行切片,则DataFrame会尝试查找
df.columns
中的字符串,如果成功,则将列作为系列返回。
如果使用列表(字符串)对df
进行切片,则DataFrame会尝试查找
df.columns
中的每个字符串,如果成功,则将列作为a返回
新的DataFrame。如果列表恰好只包含一个字符串,那么你得到一个
DataFrame只有一列。
在分配,df['B'] = xyz
调用中使用切片时
df.__setitem__('B', xyz)
。 DataFrame的__setitem__
已实施
修改df
本身。赋值不会返回值,但会进行修改
df
到位。
在表达式中使用切片时,df[xyz]
调用
df.__getitem__(xyz)
。 DataFrame的__getitem__
方法返回不同的方法
对象类型取决于xyz
的类型。
答案 1 :(得分:1)
是的,df1['A']
是一个熊猫系列,因此将它分配给df2会产生一个熊猫系列。
pandas.DataFrame(df.A)
- 将创建一个新的pandas数据帧