我有一個df如下的資料框:
import pandas as pd
data = {'A': ['XYZ', 'XYZ', 'XYZ', 'XYZ', 'PQR', 'PQR', 'PQR', 'PQR', 'CVB', 'CVB', 'CVB', 'CVB'], 'B': ['2022-02-16 14:00:31', '2022-02-16 16:11:26', '2022-02-16 17:31:26',
'2022-02-16 22:47:46', '2022-02-17 07:11:11', '2022-02-17 10:43:36',
'2022-02-17 15:05:11', '2022-02-18 18:06:12', '2022-02-19 09:05:46',
'2022-02-19 13:02:16', '2022-02-19 18:05:26', '2022-02-19 22:05:26'], 'C': [1,0,0,0,1,0,1,0,0,0,0,1]}
df = pd.DataFrame(data)
df['B'] = pd.to_datetime(df['B'])
df
| A | B | C |
------- ---------------------- ------------
| XYZ | 2022-02-16 14:00:31 | 1 |
| XYZ | 2022-02-16 16:11:26 | 0 |
| XYZ | 2022-02-16 17:31:26 | 0 |
| XYZ | 2022-02-16 22:47:46 | 0 |
| PQR | 2022-02-17 07:11:11 | 1 |
| PQR | 2022-02-17 10:43:36 | 0 |
| PQR | 2022-02-17 15:05:11 | 1 |
------- ---------------------- ------------
我想要實作的是我想計算 1 和 0 的出現并將計數值分配為資料框的新列,df并添加ID為新列,以便預期輸出應如下所示。例如,在列中,前四行C的模式計數為 4,類似地,在最后一行中,只有計數為 1 的值。1,0,0,01
Expected Output :
| A | B | C | Count | ID |
------- ---------------------- ------------ ---------- ---------
| XYZ | 2022-02-16 14:00:31 | 1 | 4 | ABC_1 |
| XYZ | 2022-02-16 16:11:26 | 0 | NaN | |
| XYZ | 2022-02-16 17:31:26 | 0 | NaN | |
| XYZ | 2022-02-16 22:47:46 | 0 | NaN | |
| PQR | 2022-02-17 07:11:11 | 1 | 2 | ABC_2 |
| PQR | 2022-02-17 10:43:36 | 0 | NaN | |
| PQR | 2022-02-17 15:05:11 | 1 | 1 | ABC_3 |
------- ---------------------- ------------ ---------- ---------
目前,我正在嘗試通過使用下面的代碼來實作相同的目標,但我無法獲得預期/期望的結果。
one_index = df[df['C'] == 1].index
zero_index = df[df['C'] == 0].index
df.loc[0, 'Count'] = len(df)
df.loc[one_index, 'ID'] = "ABC_1"
Actual Output :
| A | B | C | Count | ID |
------- ---------------------- ------------ ---------- --------
| XYZ | 2022-02-16 14:00:31 | 1 | 7 | ABC_1 |
| XYZ | 2022-02-16 16:11:26 | 0 | NaN | |
| XYZ | 2022-02-16 17:31:26 | 0 | NaN | |
| XYZ | 2022-02-16 22:47:46 | 0 | NaN | |
| PQR | 2022-02-17 07:11:11 | 1 | NaN | ABC_1 |
| PQR | 2022-02-17 10:43:36 | 0 | NaN | |
| PQR | 2022-02-17 15:05:11 | 1 | NaN | ABC_1 |
------- ---------------------- ------------ ---------- --------
如何計算熊貓資料框中 1 和 0 的出現次數?
uj5u.com熱心網友回復:
IIUC,您可以使用cumsumC 來創建組,然后groupby.transform分配size. 然后再次使用cumsum分配 ABC_X,其中 X 是組號加上洗掉 C 中 0 行的位置。
gr = df['C'].cumsum()
m = df['C'].eq(1)
df.loc[m, 'Count'] = df.groupby(gr).transform('size')
df['ID'] = ('ABC_' gr.astype(str)).where(m,'')
print(df)
# A B C Count ID
# 0 XYZ 2022-02-16 14:00:31 1 4.0 ABC_1
# 1 XYZ 2022-02-16 16:11:26 0 NaN
# 2 XYZ 2022-02-16 17:31:26 0 NaN
# 3 XYZ 2022-02-16 22:47:46 0 NaN
# 4 PQR 2022-02-17 07:11:11 1 2.0 ABC_2
# 5 PQR 2022-02-17 10:43:36 0 NaN
# 6 PQR 2022-02-17 15:05:11 1 5.0 ABC_3
# 7 PQR 2022-02-18 18:06:12 0 NaN
# 8 CVB 2022-02-19 09:05:46 0 NaN
# 9 CVB 2022-02-19 13:02:16 0 NaN
# 10 CVB 2022-02-19 18:05:26 0 NaN
# 11 CVB 2022-02-19 22:05:26 1 1.0 ABC_4
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518339.html
