我的步驟是這樣的,我先過濾dataframe,然后groupby得到我想要的資料集。比如我的df是這樣的:
test = pd.DataFrame([["Mon", 3, "A"], ["Tue", 6, "A"], ["Tue", 4, "A"], ["Wed", pd.np.nan, "A"], ["Thu", 9, "A"], ["Fri", 1, "A"], ["Sat", 2, "A"], ["Sun", 3, "B"]], columns=["date", "value", "class"])
資料框“測驗”如下所示:
date value Class
0 Mon 3 A
1 Tue 6 A
2 Tue 4 A
3 Wed 0 A
4 Thu 9 A
5 Fri 1 A
6 Sat 2 A
7 Sun 3 B
我將首先過濾所有 Atest = test[test["class"] == "A"]
然后我將聚合new_df = test(["date"],dropna=False)["value"].sum()
因為如您所見,周日將在第一步中被過濾掉。上面聚合后的結果資料框將沒有星期日。但是最終的資料集需要將星期日保留在那里。
在按“日期”分組后,我的目標是這樣的。
date value
0 Mon 3
1 Tue 10
2 Wed 0
3 Thu 9
4 Fri 1
5 Sat 2
6 Sun 0
這只是一個簡化版。我的實際情況是,“資料”列實際上是一個日期列,例如1-Jan-2021。資料集有幾年之久。但是過濾會在第一步過濾掉一些日期(就像上面的例子,過濾后星期日就沒有了)。但是,我希望那些年的所有日期都在我的結果資料框中。我怎樣才能實作它?
uj5u.com熱心網友回復:
先將不想保留的值設為 0 怎么樣
test.loc[test['class']!='A', 'value'] = 0
test.groupby('date')['value'].sum()
date
Fri 1.0
Mon 3.0
Sat 2.0
Sun 0.0
Thu 9.0
Tue 10.0
Wed 0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/390726.html
標籤:Python 熊猫 约会时间 pandas-groupby 过滤
