[英]How to groupby multiple columns in pandas based on name?
我想創建一個新的數據框,其列計算為從此數據框中具有相似名稱的列的平均值:
B6_i B6_ii B6_iii ... BXD80_i BXD80_ii BXD81_i
data ...
Cd38 0.598864 -0.225322 0.306926 ... -0.312190 0.281429 0.424752
Trim21 1.947399 2.920681 2.805861 ... 1.469634 2.103585 0.827487
Kpnb1 -0.458240 -0.417507 -0.441522 ... -0.314313 -0.153509 -0.095863
Six1 1.055255 0.868148 1.012298 ... 0.142565 0.264753 0.807692
新的數據框應如下所示:
B6 BXD80 ... BXD81
data
Cd38 -0.041416 -0.087859 ... 0.424752
Trim21 15.958981 3.091500 ... 0.827487
Kpnb1 -0.084471 0.048250 ... -0.095863
Six1 0.927383 0.037745 ... 0.807692
(如 (B6_i + B6_ii + B6_iii)/3),基於直到下划線“_”的所有字符)
有些列是 n 列之一,而其他列是單數的(如“BXD81_i”),所以我需要一種方法,可以為每個平均計算使用不同的數字。
您可以按_
之前的值匯總每列的mean
:
df.columns = df.columns.str.split('_', expand=True)
df1 = df.groupby(level=0, axis=1).mean()
或者:
df1 = df.groupby(lambda x: x.split('_')[0], axis=1).mean()
print (df1)
B6 BXD80 BXD81
data
Cd38 0.226823 -0.015381 0.424752
Trim21 2.557980 1.786609 0.827487
Kpnb1 -0.439090 -0.233911 -0.095863
Six1 0.978567 0.203659 0.807692
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.