我有一個看起來像這樣的資料框(Minimal Reproducible Example)
thermometers = ['T-10000_0001', 'T-10000_0002','T-10000_0003', 'T-10000_0004',
'T-10001_0001', 'T-10001_0002', 'T-10001_0003', 'T-10001_0004',
'T-10002_0001', 'T-10002_0003', 'T-10002_0003', 'T-10002_0004']
temperatures = [15.1, 14.9, 12.7, 10.8,
19.8, 18.3, 17.7, 18.1,
20.0, 16.4, 17.6, 19.3]
df_set = {'thermometers': thermometers,
'Temperatures': temperatures}
df = pd.DataFrame(df_set)
| 指數 | 溫度計 | 溫度 |
|---|---|---|
| 0 | T-10000_0001 | 14.9 |
| 1 | T-10000_0002 | 12.7 |
| 2 | T-10000_0003 | 12.7 |
| 3 | T-10000_0004 | 10.8 |
| 4 | T-10001_0001 | 19.8 |
| 5 | T-10001_0002 | 18.3 |
| 6 | T-10001_0003 | 17.7 |
| 7 | T-10001_0004 | 18.1 |
| 8 | T-10002_0001 | 20.0 |
| 9 | T-10002_0002 | 16.4 |
| 10 | T-10002_0003 | 17.6 |
| 11 | T-10002_0004 | 19.3 |
我正在嘗試對溫度計進行分組(即'T-10000'、'T-10001'、'T-10002'),并創建具有每個溫度計讀數的最小值、最大值和平均值的新列。所以我的最終資料框看起來像這樣
| 指數 | 溫度計 | min_temp | 平均溫度 | 最大溫度 |
|---|---|---|---|---|
| 0 | T-10000 | 10.8 | 12.8 | 14.9 |
| 1 | T-10001 | 17.7 | 18.5 | 19.8 |
| 2 | T-10002 | 16.4 | 18.3 | 20.0 |
我嘗試創建一個我認為需要正則運算式的單獨函式,但我無法弄清楚如何去做。任何幫助都感激不盡。
uj5u.com熱心網友回復:
通過使用groupby分隔符拆分來使用_。然后,只需聚合您需要的任何功能。
>>> df.groupby(df['thermometers']\
.str.split('_'). \
.str.get(0)).agg(['min', 'mean', 'max'])
min mean max
thermometers
T-10000 10.8 13.375 15.1
T-10001 17.7 18.475 19.8
T-10002 16.4 18.325 20.0
uj5u.com熱心網友回復:
另一種str.extract避免呼叫的方法str.get:
(df['Temperatures']
.groupby(df['thermometers'].str.extract('(^[^_] )', expand=False))
.agg(['min', 'mean'])
)
輸出:
min mean
thermometers
T-10000 10.8 13.375
T-10001 17.7 18.475
T-10002 16.4 18.325
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/486558.html
標籤:Python python-3.x 熊猫 数据框
