具有单行的DataFrame是否具有DataFrame的所有属性?

时间:2017-06-27 23:37:41

标签: pandas dataframe

我正在从大型DataFrame切片DataFrame,而女儿df只有一行。具有单行的女儿df是否具有与父df相同的属性?

import numpy as np
import pandas as pd
dates = pd.date_range('20130101',periods=6)
df = pd.DataFrame(np.random.randn(6,2),index=dates,columns=['col1','col2'])
df1=df.iloc[1]
type(df1)
>> pandas.core.series.Series
df1.columns
>>'Series' object has no attribute 'columns'

有没有办法在pd.series上使用pd.DataFrame的所有属性?

1 个答案:

答案 0 :(得分:2)

您正在寻找的是一行数据框:

>>> pd.DataFrame(df1).T                    # T -> transpose

                col1      col2
2013-01-02 -0.428913  1.265936

执行df.iloc[1]时会发生的事情是,pandas将其转换为一维系列,并且列成为索引。你仍然可以df1['col1'],但是你不能df.columns,因为系列基本上是一个列,因此旧的现在是新的索引

因此,您可以像这样返回以前的列:

>>> df1.index.tolist()

['col1', 'col2']

这曾经让我很困惑。我还希望df.iloc[1]是一个有一行的数据帧,但它一直是pandas的默认行为,可以自动将任何一维数据帧切片(行或列)转换为一个系列。它对于一行来说非常自然,但对于一列来说却不那么自然(因为列成为索引),但是一旦你理解了正在发生的事情,真的不是问题。