我有一个看起来像这样的数据框:
Date Category
0 2019-08-19 a
1 2019-08-19 a
2 2019-08-19 b
3 2019-08-20 b
4 2019-08-20 b
我想将其转换为这种形式;
Date a b
0 2019-08-19 2 1
1 2019-08-20 0 2
每个类别都有一列,每个日期都有各自的计数分组。
我已经尝试过:
grouper = df.groupby('Date')
df = pd.concat([pd.Series(v['Category'].value_counts().tolist(), name=k) for k, v in grouper], axis=1)
print(df.T)
这给了我
0 1
2019-08-19 2.0 1.0
2019-08-20 2.0 NaN
不太正确。
用于重现数据帧的代码:
import pandas as pd
dates = ["2019-08-19"] * 3 + ["2019-08-20"] * 2
categories = ["a"] * 2 + ["b"] * 3
headers = ["Date", "Category"]
df = pd.DataFrame(categories, dates).reset_index()
df.columns = headers