成為以下 python pandas DataFrame:
| ID | 節假日 | 訪問_1 | 訪問_2 | 訪問_3 | 其他 |
|---|---|---|---|---|---|
| 0 | 真的 | 1 | 2 | 0 | 紅色的 |
| 0 | 錯誤的 | 3 | 2 | 0 | 紅色的 |
| 0 | 真的 | 4 | 4 | 1 | 藍色的 |
| 1 | 錯誤的 | 2 | 0 | 0 | 紅色的 |
| 1 | 真的 | 1 | 2 | 1 | 綠色 |
| 2 | 錯誤的 | 1 | 0 | 0 | 紅色的 |
目前,我使用累積的訪問值計算一個新的 DataFrame,如下所示。
# Calculate the columns of the total visit count
visit_df = df.groupby('ID')[['visit_1', 'visit_2', 'visit_3']].sum()
我想創建一個新的,只考慮 Holiday 值為 True 的行。我怎么能這樣做?
感謝您的關注。
uj5u.com熱心網友回復:
首先對行進行簡單子集:
df[df['Holidays']].groupby('ID')[['visit_1', 'visit_2', 'visit_3']].sum()
輸出:
visit_1 visit_2 visit_3
ID
0 5 6 1
1 1 2 1
如果您還想獲得沒有任何匹配的組,則可以選擇:
df2 = df.set_index('ID')
(df2.where(df2['Holidays'])
.groupby('ID')[['visit_1', 'visit_2', 'visit_3']].sum()
)
輸出:
visit_1 visit_2 visit_3
ID
0 5.0 6.0 1.0
1 1.0 2.0 1.0
2 0.0 0.0 0.0
變體
df2 = df.set_index('ID')
(df2.where(df2['Holidays'])
.groupby('ID')[['visit_1', 'visit_2', 'visit_3']].sum()
.convert_dtypes()
.add_suffix('_Holidays')
)
輸出:
visit_1_Holidays visit_2_Holidays visit_3_Holidays
ID
0 5 6 1
1 1 2 1
2 0 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/474529.html
上一篇:獲取資料框中搜索項的索引
