我有一个看起来像这样的数据集
Fault ID REPORT_DATE INITIAL_MFL
0 ID000001 2014-01-01 CE
1 ID000002 2014-01-01 CA
2 ID000003 2014-01-01 OTHER
3 ID000004 2014-01-01 OK
4 ID000005 2014-01-01 LN
... ... ... ...
275586 ID275581 2017-03-31 CE
275587 ID275586 2017-03-31 CE
275588 ID275589 2017-03-31 CA
275589 ID275590 2017-03-31 CA
275590 ID275591 2017-03-31 OK
我想按日期对它们进行分组。 例如
REPORT_DATE INITIAL_MFL CE CA OK LN OTHERS
2014-01-01 [CE, CA, OTHERS, OK, ...] 2 1 5 3 6
2014-01-02 [CE, CA, OTHERS, OK, ...] 2 1 5 3 6
一天内可能会发生许多故障。所以,我需要将它们分组并在其基础上创建一个新列。我不知道该怎么做。
如果你能帮助我解决这个问题,我将不胜感激。
谢谢。
答案 0 :(得分:3)
假设你有这个数据框:
Fault ID REPORT_DATE INITIAL_MFL
0 ID000001 2014-01-01 CE
1 ID000002 2014-01-01 CA
2 ID000003 2014-01-01 OTHER
3 ID000004 2014-01-01 OK
4 ID000005 2014-01-01 LN
5 ID275581 2017-03-31 CE
6 ID275586 2017-03-31 CE
7 ID275589 2017-03-31 CA
8 ID275590 2017-03-31 CA
9 ID275591 2017-03-31 OK
然后你可以这样做:
from collections import Counter
g = df.groupby("REPORT_DATE")["INITIAL_MFL"].agg(list)
c = pd.DataFrame(g.apply(Counter).tolist(), index=g.index)
df_out = g.to_frame().join(c)
print(df_out)
打印:
INITIAL_MFL CE CA OTHER OK LN
REPORT_DATE
2014-01-01 [CE, CA, OTHER, OK, LN] 1 1 1.0 1 1.0
2017-03-31 [CE, CE, CA, CA, OK] 2 2 NaN 1 NaN