float値とstring値の混合を含む基準に一致するデータフレーム内の行のテキストのフォントの太さを変更するにはどうすればよいですか?

user1828605
data = {'Rest (N=11570)': {4: '7369 (62.28%)', 1: '7016 (59.98%)', 37: '734 (6.14%)', 40: '9829 (79.09%)', 43: '37 (2.42%)', 5: '3080 (25.29%)', 6: '1273 (9.43%)', 12: '6992 (62.61%)', 15: '777 (5.47%)', 18: '332 (2.10%)', 21: '7 (3.44%)', 24: '2013 (14.39%)', 27: '290 (1.81%)', 30: '2048 (14.98%)', 33: '9 (3.85%)', 36: '353 (2.15%)', 351: '0.08 [0.05 - 0.14]', 354: '0.08 [0.05 - 0.13]', 357: '0.08 [0.04 - 0.14]', 168: '4.00 [3.72 - 4.30]', 171: '3.96 [3.62 - 4.27]', 174: '4.22 [3.92 - 4.50]', 177: '3.81 [3.44 - 4.12]', 180: '3.93 [3.60 - 4.20]'}, 'p_value': {4: '<0.001', 1: '0.005', 37: '0.056', 40: '<0.001', 43: '<0.001', 5: '<0.001', 6: '<0.001', 12: '<0.001', 15: '<0.001', 18: '<0.001', 21: '<0.001', 24: '<0.001', 27: '<0.001', 30: '<0.001', 33: '<0.001', 36: '<0.001', 351: '0.366', 354: '<0.001', 357: '0.008', 168: '0.012', 171: '0.004', 174: '0.220', 177: '0.047', 180: '0.025'}, 'ks_score': {4: nan, 1: nan, 37: nan, 40: nan, 43: nan, 5: nan, 6: nan, 12: nan, 15: nan, 18: nan, 21: nan, 24: nan, 27: nan, 30: nan, 33: nan, 36: nan, 351: '0.02', 354: '0.05', 357: '0.03', 168: '0.03', 171: '0.03', 174: '0.02', 177: '0.02', 180: '0.03'}}

を使用してスタイリングを実行する必要があるこのデータがありpandasます。がある行のテキストを太字に設定しようとしていp_value < 0.05 or p_value == '<0.001'ます。しかし、私はこれを行う方法を理解することはできません。https://pandas.pydata.org/pandas-docs/stable/user_guide/style.htmlからドキュメントを読んでいます

def __highlight_pvalue__(x):
        
        return ['font-weight:bold' if p == '<0.001' or float(p) < 0.05 else p for p in x]

スタイリング関数を呼び出します。

df.style.apply(__add_categorical_header_row__, row_idxs = row_indices, row_labels = row_labels, axis = None).apply(__highlight_pvalue__)

関数は正常に__add_categorical_header_row__動作しますが、関数を追加__highlight_pvalue__すると、次のエラーが発生します。エラーの意味は理解できますが、解決方法がわかりません。

could not convert string to float: '7369 (62.28%)'

またtry except__hightlight_pvalue__関数内に入れみましたがうまくいきませんでした。

まで

まず、データディクショナリを修正する必要があります。すべてnanをとして設定する必要がありますnp.nan次回、他の人が試すためのデータを作成するときに、何かを考えなければなりません。

次に、関数の機能を実際には示さなかった関数にスタイルコードを追加しました。これには関数の詳細は含まれていません。

スタイルを設定する最初の関数が機能すると仮定すると、関数の問題は、列ごとにこれをチェックしていることです。.apply軸なしで使用しているため、デフォルトで0、つまり列(一度に1列)になります。最初の列は文字列のように見えるため、値を文字列に変換できません。したがって、エラー。

したがって、これを修正__highlight_pvalue__するには、p値のみをチェックするように関数を変更する必要があります

data = {'Rest (N=11570)': {4: '7369 (62.28%)', 1: '7016 (59.98%)', 37: '734 (6.14%)', 40: '9829 (79.09%)', 43: '37 (2.42%)', 5: '3080 (25.29%)', 6: '1273 (9.43%)', 12: '6992 (62.61%)', 15: '777 (5.47%)', 18: '332 (2.10%)', 21: '7 (3.44%)', 24: '2013 (14.39%)', 27: '290 (1.81%)', 30: '2048 (14.98%)', 33: '9 (3.85%)', 36: '353 (2.15%)', 351: '0.08 [0.05 - 0.14]', 354: '0.08 [0.05 - 0.13]', 357: '0.08 [0.04 - 0.14]', 168: '4.00 [3.72 - 4.30]', 171: '3.96 [3.62 - 4.27]', 174: '4.22 [3.92 - 4.50]', 177: '3.81 [3.44 - 4.12]', 180: '3.93 [3.60 - 4.20]'}, 'p_value': {4: '<0.001', 1: '0.005', 37: '0.056', 40: '<0.001', 43: '<0.001', 5: '<0.001', 6: '<0.001', 12: '<0.001', 15: '<0.001', 18: '<0.001', 21: '<0.001', 24: '<0.001', 27: '<0.001', 30: '<0.001', 33: '<0.001', 36: '<0.001', 351: '0.366', 354: '<0.001', 357: '0.008', 168: '0.012', 171: '0.004', 174: '0.220', 177: '0.047', 180: '0.025'}, 'ks_score': {4: np.nan, 1: np.nan, 37: np.nan, 40: np.nan, 43: np.nan, 5: np.nan, 6: np.nan, 12: np.nan, 15: np.nan, 18: np.nan, 21: np.nan, 24: np.nan, 27: np.nan, 30: np.nan, 33: np.nan, 36: np.nan, 351: '0.02', 354: '0.05', 357: '0.03', 168: '0.03', 171: '0.03', 174: '0.02', 177: '0.02', 180: '0.03'}}
data = pd.DataFrame(data)

def __highlight_pvalue__(x):
        
    if x.p_value == '<0.001' or float(x.p_value) < 0.05:
        return ['font-weight: bold'] * x.shape[0] # number of colums
    else: 
        return ''
          
      

結果のデータフレーム

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ