具有独立索引的动态数据透视表

我有一个包含基本 sociodem 变量和许多其他协变量的数据框。对于 sociodem 变量,我想创建一个数据透视表,以便两列按 聚合Test Result。我想要一些按计数分类的变量,一些按中位数分类。例如,我想捕获的中位数,WBC但我想要的计数是Race。


我不确定如何构建我的数据透视表或 groupby 表,因为我知道列需要是Test Result并且索引需要是其他协变量,但我不能将多个索引作为不同的变量。


Example Dataframe

ID    Race    WBC_Count  Cough  (0/1)  Test Result....

1     black     23.6       0                Positive 

2     white     13.5       1                Negative

3     hispanic  20.3       0                Positive


               Positive Negative 

Black             23        54

White             23        56

Asian             34        18

...

WBC(median)      13.5       10.9

Cough(count)     23          13


慕森卡
浏览 90回答 1
1回答

RISEBY

pandas.DataFrame.groupby在所需的列上使用。pandas.DataFrame.agg对不同的列使用不同的函数我知道该列需要是测试结果,索引需要是其他协变量,但我不能将多个索引作为不同的变量。pandas.DataFrame.reset_index在特定级别删除多索引。问题中提供的示例数据不容易像发布的那样重现,因此已为此答案提供了可重现的数据集。import pandas as pdimport numpy as npimport random# sample datanp.random.seed(365)random.seed(365)data = {'a': [np.random.randint(10) for _ in range(25)],        'groups': [random.choice(['1-5', '6-25', '26-100', '100-500', '500-1000', '>1000']) for _ in range(25)],        'treatment': [random.choice(['Yes', 'No']) for _ in range(25)],        'date': pd.bdate_range(datetime.today(), freq='d', periods=25).tolist()}df = pd.DataFrame(data)# display(df.head()) a  groups treatment       date 2   >1000       Yes 2020-07-20 4  26-100       Yes 2020-07-21 1   >1000       Yes 2020-07-22 5    6-25        No 2020-07-23 2  26-100       Yes 2020-07-24# groupby and aggregate different features of different columnsdf.groupby(['groups', 'treatment']).agg({'a': 'mean', 'groups': 'count'}).reset_index(level='treatment')         treatment         a  groupsgroups                              1-5             No  5.000000       31-5            Yes  7.000000       1100-500         No  5.500000       2100-500        Yes  3.000000       226-100          No  9.000000       126-100         Yes  2.666667       3500-1000        No  2.666667       3500-1000       Yes  7.500000       26-25            No  5.500000       26-25           Yes  5.333333       3>1000          Yes  2.000000       3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python