【问题标题】:How can I get this series to a pandas dataframe?我怎样才能把这个系列放到熊猫数据框中?
【发布时间】:2016-08-25 07:39:17
【问题描述】:

我有一些数据,在使用 groupby 函数后,我现在有一个如下所示的系列:

year
1997    15
1998    22
1999    24
2000    24
2001    28
2002    11
2003    15
2004    19
2005    10
2006    10
2007    21
2008    26
2009    23
2010    16
2011    33
2012    19
2013    26
2014    25

如何从这里创建一个熊猫数据框,其中 year 作为一列,另一列名为 sightings

我是熊猫新手,所以我真的不知道我在做什么。我已经尝试了reindexunstack 函数,但无法得到我想要的......

【问题讨论】:

    标签: python pandas dataframe multiple-columns series


    【解决方案1】:

    您可以使用reset_indexrename 列:

    print (df.reset_index())
        index  year
    0    1997    15
    1    1998    22
    2    1999    24
    3    2000    24
    4    2001    28
    5    2002    11
    6    2003    15
    7    2004    19
    8    2005    10
    9    2006    10
    10   2007    21
    11   2008    26
    12   2009    23
    13   2010    16
    14   2011    33
    15   2012    19
    16   2013    26
    17   2014    25
    

    print (df.reset_index().rename(columns=({'index':'year','year':'sightings'})))
        year  sightings
    0   1997         15
    1   1998         22
    2   1999         24
    3   2000         24
    4   2001         28
    5   2002         11
    6   2003         15
    7   2004         19
    8   2005         10
    9   2006         10
    10  2007         21
    11  2008         26
    12  2009         23
    13  2010         16
    14  2011         33
    15  2012         19
    16  2013         26
    17  2014         25
    

    另一种解决方案是通过名称列表设置列名:

    df1 = df.reset_index()
    df1.columns = ['year','sightings']
    print (df1)
        year  sightings
    0   1997         15
    1   1998         22
    2   1999         24
    3   2000         24
    4   2001         28
    5   2002         11
    6   2003         15
    7   2004         19
    8   2005         10
    9   2006         10
    10  2007         21
    11  2008         26
    12  2009         23
    13  2010         16
    14  2011         33
    15  2012         19
    16  2013         26
    17  2014         25
    

    编辑:

    有时有助于将参数as_index=False 添加到groupby 以返回DataFrame

    import pandas as pd
    
    df = pd.DataFrame({'A':[1,1,3],
                       'B':[4,5,6]})
    
    print (df)
       A  B
    0  1  4
    1  1  5
    2  3  6
    
    print (df.groupby('A')['B'].sum())
    A
    1    9
    3    6
    Name: B, dtype: int64
    
    print (df.groupby('A', as_index=False)['B'].sum())
       A  B
    0  1  9
    1  3  6
    

    【讨论】:

    • 第二种解决方案正是我需要的,谢谢..(我会接受)
    • 谢谢。也许有一个问题——你使用什么样的 groupby?因为有时帮助将参数as_index=False 添加到groupby 并返回漂亮的DataFrame。它适用于 groupby 和聚合总和,意思是......
    【解决方案2】:
    s.rename('sightings').reset_index()
    

    【讨论】:

      【解决方案3】:

      我在 groupby 阶段也使用这种方法将结果直接放入数据框:

      df2 = df1.groupby(['Year']).count()
      df3 = pd.DataFrame(df2).reset_index()
      

      如果您的原始数据框 - df1 - 有“年”和“目击”,因为它是两列,那么 df3 应该在“年”下列出每年,在“目击”下列出计数(或总和、平均值等)。

      如果没有,您可以通过执行以下操作更改列名:

      df3.columns = ['Year','Sightings']
      

      df3 = df3.rename(columns={'oldname_A': 'Year', 'oldname_B': 'Sightings'})
      

      【讨论】:

        猜你喜欢
        • 2023-01-11
        • 2020-08-21
        • 2019-06-08
        • 2020-12-19
        • 2023-01-26
        • 1970-01-01
        • 2017-05-25
        • 2017-03-10
        • 2011-08-20
        相关资源
        最近更新 更多