2017-12-03 9 views
1

の内容に集約:私は、各プロップのためのPASSを持っているどのように多くのサンプルを示していることをバープロットを作成することを目標としていパンダ - 私はこのようになりますパンダのデータフレーム持っているデータフレーム

 Lane PropA PropB PropC 
Sample      
NameA R1 PASS FAIL WARN 
NameB R2 FAIL FAIL PASS 
NameC R1 WARN PASS PASS 
NameD R2 PASS PASS WARN 

を、 WARNまたはFAILを値として使用します。したがって、代わりにコンテンツが次のようなデータフレームを用意する必要があります。

 PASS WARN FAIL 
Prop 
PropA 3  2  1 
PropB 2  5  3 
PropC 2  5  1 

上記のデータフレームからどのように取得するのですか?

ありがとうございます!その後、dropまたはfilterによって

答えて

1

まずフィルタのみ必要な列と、必要に応じてfillnaによって0NaN Sを交換、その後value_countsで数えると:

df1 = df.drop('Lane', 1).apply(lambda x: x.value_counts()).T.fillna(0).astype(int) 

または:

df1 = df.filter(like='Prop').apply(lambda x: x.value_counts()).T.fillna(0).astype(int) 

print (df1) 
     FAIL PASS WARN 
PropA  1  2  1 
PropB  2  2  0 
PropC  0  2  2 

そして最後:

df1.plot.bar() 
+0

素晴らしい、ありがとう! –

+0

あなたは大歓迎です!私の答えが役に立ったら、[accept](https://stackoverflow.com/help/someone-answers)を忘れないでください。答えの横にあるチェックマーク( '✓')をクリックすると、グレーアウトから記入してください。ありがとう。 – jezrael

0

私は次のことがうまくいくと思います。

new_df = pd.DataFrame(columns=['PASS', 'WARN', 'FAIL']) 

for col in df.columns[1:]: 
    new_df = new_df.append(pd.DataFrame(df.groupby(col)[col].count()).transpose()) 
関連する問題