2017-12-18 153 views
1

我需要找到兩列(p_1_logreg,p_2_logreg)的最大值,其中比較應該只限製爲14行。從分割索引獲得的分組值

enter image description here

My csv file

我試圖切開我的索引:

int1_str1_str2_int2_str3_int4 

最大應該在哪裏INT1,STR1,STR2 INT2和STR3固定行之間只可以發現,和int4會發生變化(從索引0到索引13,依此類推)。

我試圖一次修復每個元素並使用groupby,但是我無法遍歷int4值。

以下是查找列p_1_label的最大值的代碼,但結果不是我正在尋找的。

max_1_row=raw_prob.loc[raw_prob.groupby(raw_prob['id'].str.split('_').str[1])['p_1_'+label].idxmax()] 

    max_1_row=max_1_row.loc[raw_prob.groupby(raw_prob['id'].str.split('_').str[3])['p_1_'+label].idxmax()] 

    max_1_row=max_1_row.loc[raw_prob.groupby(raw_prob['id'].str.split('_').str[5])['p_1_'+label].idxmax()] 

任何想法?

+0

所以你想要結果:0.9851951和0.9996491? – Joe

+0

是的,這些值僅是前14行的結果。我需要每個14行的結果 – Ben

回答

2

我想你需要DataFrameGroupBy.idxmax替換最後_空字符串,然後通過loc選擇:

df = pd.read_csv('myProb.csv', index_col=[0]) 

idx = df.drop('id', 1).groupby(df['id'].str.replace('_\d+$', '')).idxmax() 
print (idx.head(15)) 
           p_0_logreg p_1_logreg p_2_logreg 
id                
6_PanaCleanerJune_sub_12_ICA   2   9   6 
6_PanaCleanerJune_sub_13_ICA   17   19   23 
6_PanaCleanerJune_sub_14_ICA   34   37   33 
6_PanaCleanerJune_sub_15_ICA   52   51   43 
6_PanaCleanerJune_sub_17_ICA   66   67   69 
6_PanaCleanerJune_sub_18_ICA   82   79   76 
6_PanaCleanerJune_sub_19_ICA   89   87   90 
6_PanaCleanerJune_sub_20_ICA   98   103   104 
6_PanaCleanerJune_sub_21_ICA   114   117   112 
6_PanaCleanerJune_sub_22_ICA   129   133   127 
6_PanaCleanerJune_sub_23_ICA   145   146   143 
6_PanaCleanerJune_sub_24_ICA   155   166   161 
6_PanaCleanerJune_sub_25_ICA   176   173   174 
6_PanaCleanerJune_sub_26_ICA   186   191   189 
6_PanaCleanerJune_sub_27_ICA   202   203   209 

df1 = df.loc[idx['p_1_logreg']] 
print (df1.head(15)) 
            id p_0_logreg p_1_logreg p_2_logreg 
9 6_PanaCleanerJune_sub_12_ICA_10 0.013452 0.985195 0.001353 
19 6_PanaCleanerJune_sub_13_ICA_6 0.051184 0.948816 0.000000 
37 6_PanaCleanerJune_sub_14_ICA_10 0.013758 0.979351 0.006890 
51 6_PanaCleanerJune_sub_15_ICA_10 0.076056 0.923944 0.000000 
67 6_PanaCleanerJune_sub_17_ICA_12 0.051060 0.947660 0.001280 
79 6_PanaCleanerJune_sub_18_ICA_10 0.051184 0.948816 0.000000 
87 6_PanaCleanerJune_sub_19_ICA_4 0.078162 0.917751 0.004087 
103 6_PanaCleanerJune_sub_20_ICA_6 0.076400 0.921263 0.002337 
117 6_PanaCleanerJune_sub_21_ICA_6 0.155002 0.791753 0.053245 
133 6_PanaCleanerJune_sub_22_ICA_8 0.000000 0.998623 0.001377 
146 6_PanaCleanerJune_sub_23_ICA_7 0.017549 0.973995 0.008457 
166 6_PanaCleanerJune_sub_24_ICA_13 0.025215 0.974785 0.000000 
173 6_PanaCleanerJune_sub_25_ICA_6 0.025656 0.960220 0.014124 
191 6_PanaCleanerJune_sub_26_ICA_10 0.098872 0.895526 0.005602 
203 6_PanaCleanerJune_sub_27_ICA_8 0.066493 0.932470 0.001037 

df2 = df.loc[idx['p_2_logreg']] 
print (df2.head(15)) 
            id p_0_logreg p_1_logreg p_2_logreg 
6  6_PanaCleanerJune_sub_12_ICA_7 0.000000 0.000351 0.999649 
23 6_PanaCleanerJune_sub_13_ICA_10 0.000000 0.000351 0.999649 
33 6_PanaCleanerJune_sub_14_ICA_6 0.080748 0.000352 0.918900 
43 6_PanaCleanerJune_sub_15_ICA_2 0.017643 0.000360 0.981996 
69 6_PanaCleanerJune_sub_17_ICA_14 0.882449 0.000290 0.117261 
76 6_PanaCleanerJune_sub_18_ICA_7 0.010929 0.000360 0.988711 
90 6_PanaCleanerJune_sub_19_ICA_7 0.010929 0.000351 0.988720 
104 6_PanaCleanerJune_sub_20_ICA_7 0.006714 0.000360 0.992925 
112 6_PanaCleanerJune_sub_21_ICA_1 0.869393 0.000339 0.130269 
127 6_PanaCleanerJune_sub_22_ICA_2 0.000000 0.000351 0.999649 
143 6_PanaCleanerJune_sub_23_ICA_4 0.017218 0.000360 0.982421 
161 6_PanaCleanerJune_sub_24_ICA_8 0.369685 0.000712 0.629603 
174 6_PanaCleanerJune_sub_25_ICA_7 0.307056 0.000496 0.692448 
189 6_PanaCleanerJune_sub_26_ICA_8 0.850195 0.000368 0.149437 
209 6_PanaCleanerJune_sub_27_ICA_14 0.000000 0.000351 0.999649 

詳細信息:

print (df['id'].str.replace('_\d+$', '').head(15)) 
0  6_PanaCleanerJune_sub_12_ICA 
1  6_PanaCleanerJune_sub_12_ICA 
2  6_PanaCleanerJune_sub_12_ICA 
3  6_PanaCleanerJune_sub_12_ICA 
4  6_PanaCleanerJune_sub_12_ICA 
5  6_PanaCleanerJune_sub_12_ICA 
6  6_PanaCleanerJune_sub_12_ICA 
7  6_PanaCleanerJune_sub_12_ICA 
8  6_PanaCleanerJune_sub_12_ICA 
9  6_PanaCleanerJune_sub_12_ICA 
10 6_PanaCleanerJune_sub_12_ICA 
11 6_PanaCleanerJune_sub_12_ICA 
12 6_PanaCleanerJune_sub_12_ICA 
13 6_PanaCleanerJune_sub_12_ICA 
14 6_PanaCleanerJune_sub_13_ICA 
Name: id, dtype: object 
+0

謝謝。我的預期輸出是最大所在的行。這意味着每組14行,我需要找到P1是最大的行和P2是最大的行。 – Ben

+0

另外,我需要得到ICA後的數字 – Ben

+0

是的,它在'df1'和'df2'中。 – jezrael