我正在尝试从中分离出单个数据框,以groupby将其打印为pandas HTML表。我需要分别将它们引用并呈现为表格,以便可以对其进行屏幕截图以进行演示。
groupby
这是我当前的代码:
import pandas as pd df = pd.DataFrame( {'area': [5, 42, 20, 20, 43, 78, 89, 30, 46, 78], 'cost': [52300, 52000, 25000, 61600, 43000, 23400, 52300, 62000, 62000, 73000], 'grade': [1, 3, 2, 1, 2, 2, 2, 4, 1, 2], 'size': [1045, 957, 1099, 1400, 1592, 1006, 987, 849, 973, 1005], 'team': ['man utd', 'chelsea', 'arsenal', 'man utd', 'man utd', 'arsenal', 'man utd', 'chelsea', 'arsenal', 'arsenal']}) result = df.groupby(['team', 'grade']).agg({'cost':'mean', 'area':'mean', 'size':'sum'}).rename(columns={'cost':'mean_cost', 'area':'mean_area'}) dfs = {team:grp.drop('team', axis=1) for team, grp in result.reset_index().groupby('team')} for team, grp in dfs.items(): print('{}:\n{}\n'.format(team, gap))
哪些打印(作为非HTML表格):
chelsea: grade mean_cost mean_area size 2 3 52000 42 957 3 4 62000 30 849 arsenal: grade mean_cost mean_area size 0 1 62000.000000 46.000000 973 1 2 40466.666667 58.666667 3110 man utd: grade mean_cost mean_area size 4 1 56950 12.5 2445 5 2 47650 66.0 2579
是否可以将这些数据帧作为HTML表一张一张地获得?为避免疑问,我不需要一种迭代方法就可以一次性将它们全部返回为HTML表-很高兴单独引用每个表。
正如Thomas K指出的那样,您可以用来IPython.core.display.display在IPython笔记本中合并DataFrame的显示和打印语句:
IPython.core.display.display
import pandas as pd from IPython.core import display as ICD df = pd.DataFrame( {'area': [5, 42, 20, 20, 43, 78, 89, 30, 46, 78], 'cost': [52300, 52000, 25000, 61600, 43000, 23400, 52300, 62000, 62000, 73000], 'grade': [1, 3, 2, 1, 2, 2, 2, 4, 1, 2], 'size': [1045, 957, 1099, 1400, 1592, 1006, 987, 849, 973, 1005], 'team': ['man utd', 'chelsea', 'arsenal', 'man utd', 'man utd', 'arsenal', 'man utd', 'chelsea', 'arsenal', 'arsenal']}) result = df.groupby(['team', 'grade']).agg({'cost':'mean', 'area':'mean', 'size':'sum'}).rename(columns={'cost':'mean_cost', 'area':'mean_area'}) dfs = {team:grp.drop('team', axis=1) for team, grp in result.reset_index().groupby('team')} for team, grp in dfs.items(): print(team) ICD.display(grp)
产生