pandas.core.series.series到数据框

时间:2020-07-22 10:16:37

标签: python pandas-groupby

我有此代码:

df = pd.DataFrame([('bird', 'Falconiformes', 389.0),
               ('bird', 'Psittaciformes', 24.0),
               ('mammal', 'Carnivora', 80.2),
               ('mammal', 'Primates', np.nan),
               ('mammal', 'Carnivora', 58)],
              index=['falcon', 'parrot', 'lion', 'monkey', 'leopard'],
              columns=('class', 'order', 'max_speed'))

我想重新组合相同值:

gp = df.groupby(['class', 'order','max_speed'])["class"].size().frame()

我明白了:

                                 class
class  order          max_speed       
bird   Falconiformes  389.0          1
       Psittaciformes 24.0           1
mammal Carnivora      58.0           1
                      80.2           1

我将其放在html文件中,但显示的只是最后一列,而我需要前三列。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

请尝试使用标志index=True,因为应用groupby时索引中还有其他3列

df = pd.DataFrame([('bird', 'Falconiformes', 389.0),
           ('bird', 'Psittaciformes', 24.0),
           ('mammal', 'Carnivora', 80.2),
           ('mammal', 'Primates', np.nan),
           ('mammal', 'Carnivora', 58)],
          index=['falcon', 'parrot', 'lion', 'monkey', 'leopard'],
          columns=('class', 'order', 'max_speed'))
> df

        class   order           max_speed
falcon  bird    Falconiformes   389.0
parrot  bird    Psittaciformes  24.0
lion    mammal  Carnivora       80.2
monkey  mammal  Primates        NaN
leopard mammal  Carnivora       58.0
gp = df.groupby(['class', 'order','max_speed'])["class"].size().to_frame()
                                             class
class            order           max_speed  
bird             Falconiformes   389.0         1
                 Psittaciformes  24.0          1
mammal           Carnivora       58.0          1
                                 80.2          1
# All columns are printed in html
gp.to_html('D:/sample.html', index=True)

# Only last column, which is not in index gets printed in HTML.
gp.to_html('D:/sample.html', index=False)

修改

我有此错误:SyntaxError:(unicode错误)“ unicodeescape”编解码器无法解码位置2-3中的字节:截断的\ UXXXXXXXX转义

上述错误是decoding错误,因为您是从具有不同编码的文件中导入excel的。要解决此问题,请使用encoding标志传递正确的编码格式。

就您而言,

gp.to_html('C:\Users\gregd\PycharmProjects\sample.html', index=True, encoding='utf-8')