我有此代码:
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文件中,但显示的只是最后一列,而我需要前三列。有什么想法吗?
谢谢!
答案 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')