上の条件付きフィルターとGROUPBY:、私は次のような構造を持つデータフレーム持っているパンダのデータフレーム
date kind sector
0 2017-02-01 P A
1 2017-02-01 P A
2 2017-02-01 L A
3 2017-02-01 G A
4 2017-02-01 P B
5 2017-02-01 P B
6 2017-02-01 L B
7 2017-02-01 T B
8 2017-02-02 P A
9 2017-02-02 P A
10 2017-02-02 L A
11 2017-02-02 T A
12 2017-02-02 A B
13 2017-02-02 P B
14 2017-02-02 L B
15 2017-02-02 L B
をそして、私はルールがkind == P
かのことですフォーマット
date sector free occupied total
2017-02-01 A 2 2 4
2017-02-01 B 2 2 4
2017-02-02 A 2 2 4
2017-02-02 A 3 1 4
と集約を作成したいですそれ以外は無料で、合計はすべてのエントリの合計です。このカウントを行うための方法はあり
df_p = df[df.kind == 'P']
df_np = df[df.kind != 'P']
df_t = df_p.groupby(['date', 'sector'], as_index=False).count()
df_nt = df_np.groupby(['date', 'sector'], as_index=False).count()
df_nt.rename(columns={'kind':'free'}, inplace=True)
df_t = pd.concat([df_t, df_nt])
:私がして、グループにapply
を使用しようとしましたが、それは仕事didn't:
df.groupby(['date', 'kind']).apply(lambda x: 1 if x == 'P' else 0)
そして、データフレームを分割してもdidn't仕事を組み合わせることを?
は間違い希望する出力の最後の行ですか? '2017-02-01 A 3 1 4' あなたは' 2017-02-01 A'を繰り返すようです。 – Moondra
タイポが修正されました。 – Ivan