2017-09-14 12 views
0

私はipythonが新しく、データフレームのグループ化で何かをしようとしています。 Bによってpandasデータフレームグループbyおよびagg

1)グループが、B1とB2指標として、B1とB2とのマルチレベル列を作成する代わりに、行にグループ化される:私は次のことを達成したい

以下
df_test = pd.DataFrame({"A": range(4), "B": ["B1", "B2", "B1", "B2"], "C": ["C1", "C1", np.nan, "C2"]}) 
df_test 

    A B C 
0 0 B1 C1 
1 1 B2 C1 
2 2 B1 NaN 
3 3 B2 C2 

ようなデータフレームを有しています{[ 'カウント']、 'A':[ 'サム'] 'C'}

B 
    A B1 B2 C 
0 6 2 2 3 

方法を基本的に

2)カラムAおよびCのようなものが印加されるAGG機能をカウント?ありがとう

+0

なぜ結果がC = 3ですか? –

+0

1 + 1 + 1 + 0(NaN)= 3をカウントし、グループB1またはB2でカウントしないで意味がありますか?私の悪い、私はNaNをそこに置くべきです – user3299264

答えて

1

各列に対して別々のアクションを実行しています。これをハックするには、AとCを集計し、次にBの値の数を別々に取ってから、再びデータを結合します。

ac = df_test.agg({'A':'sum', 'C':'count'}) 
b = df_test['B'].value_counts() 
pd.concat([ac, b]).sort_index().to_frame().T 
    A B1 B2 C 
0 6 2 2 3 
+0

ありがとう、彼らは同じ 'グループ'にあるので、B1とB2の上に1つのレベル 'B'を追加する方法はありますか? – user3299264

+0

が見つかりました。名前= ['レベル0'、 'レベル1'] cols1 = pd.MultiIndex.from_arrays([['A'、 'C​​'、 'B'、 'B'、 'C​​'、 'C​​'] 、['A'、 'C​​'、 'B1'、 'B2'、 'C​​1'、 'C​​2']]、名前=名前) df_grouped.columns = cols1 – user3299264

関連する問題