亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有獨立索引的動態數據透視表

具有獨立索引的動態數據透視表

慕森卡 2023-03-22 16:32:00
我有一個包含基本 sociodem 變量和許多其他協變量的數據框。對于 sociodem 變量,我想創建一個數據透視表,以便兩列按 聚合Test Result。我想要一些按計數分類的變量,一些按中位數分類。例如,我想捕獲的中位數,WBC但我想要的計數是Race。我不確定如何構建我的數據透視表或 groupby 表,因為我知道列需要是Test Result并且索引需要是其他協變量,但我不能將多個索引作為不同的變量。Example DataframeID    Race    WBC_Count  Cough  (0/1)  Test Result....1     black     23.6       0                Positive 2     white     13.5       1                Negative3     hispanic  20.3       0                Positive               Positive Negative Black             23        54White             23        56Asian             34        18...WBC(median)      13.5       10.9Cough(count)     23          13
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

  • pandas.DataFrame.groupby在所需的列上使用。

  • pandas.DataFrame.agg對不同的列使用不同的函數

  • 我知道該列需要是測試結果,索引需要是其他協變量,但我不能將多個索引作為不同的變量。

    • pandas.DataFrame.reset_index在特定級別刪除多索引。

  • 問題中提供的示例數據不容易像發布的那樣重現,因此已為此答案提供了可重現的數據集。

import pandas as pd

import numpy as np

import random


# sample data

np.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 columns

df.groupby(['groups', 'treatment']).agg({'a': 'mean', 'groups': 'count'}).reset_index(level='treatment')


? ? ? ? ?treatment? ? ? ? ?a? groups

groups? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

1-5? ? ? ? ? ? ?No? 5.000000? ? ? ?3

1-5? ? ? ? ? ? Yes? 7.000000? ? ? ?1

100-500? ? ? ? ?No? 5.500000? ? ? ?2

100-500? ? ? ? Yes? 3.000000? ? ? ?2

26-100? ? ? ? ? No? 9.000000? ? ? ?1

26-100? ? ? ? ?Yes? 2.666667? ? ? ?3

500-1000? ? ? ? No? 2.666667? ? ? ?3

500-1000? ? ? ?Yes? 7.500000? ? ? ?2

6-25? ? ? ? ? ? No? 5.500000? ? ? ?2

6-25? ? ? ? ? ?Yes? 5.333333? ? ? ?3

>1000? ? ? ? ? Yes? 2.000000? ? ? ?3


查看完整回答
反對 回復 2023-03-22
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號