我有一個包含條目的資料集,其中一列是識別符號,比如說 A 列。我想計算 A 列中有多少條目是唯一的,B 列位于 x 和 y 之間,C 列等于z。
舉例說明:
| 排 | A欄 | B欄 | C欄 |
|---|---|---|---|
| 1 | 1001 | 4 | 1 |
| 2 | 1001 | 3 | 0 |
| 3 | 1001 | 6 | 1 |
| 4 | 1001 | 4 | 1 |
| 5 | 1002 | 7 | 0 |
| 6 | 1002 | 7 | 1 |
| 7 | 1002 | 2 | 1 |
| 8 | 1002 | 3 | 1 |
| 9 | 1003 | 0 | 1 |
| 10 | 1003 | 3 | 0 |
| 11 | 1003 | 3 | 1 |
| 12 | 1003 | 4 | 1 |
我想要實作的目標如下:計算 A 列有多少個唯一值,它在 B 列中正好有兩個條目,介于 2-4 和 C 列等于 1。
查看該表,這將回傳 1,因為只有列 A=1002 滿足所有條件(第 7 行和第 8 行)。
我已經嘗試了一些代碼,但我不知道如何使用 A 列中的唯一值標準取得成功。
uj5u.com熱心網友回復:
這應該有效。首先我對你的條件進行子集,然后我計算出現的次數,檢查它是否為 2,然后將它們相加。
sum(df[(df['Column B ']> 1) & (df['Column B ']<4) & (df['Column C'] == 1)]['Column A '].value_counts() == 2)
uj5u.com熱心網友回復:
首先創建一個條件來過濾您的資料框
con = df['Column B'].between(2,4) & df['Column C'].eq(1)
然后使用一個groupby操作。
df.loc[con].groupby('Column A')['Column A'].nunique()
Column A
1001 1
1002 1
1003 1
Name: Column A, dtype: int64
df.loc[con]
Row Column A Column B Column C
0 1 1001 4 1
3 4 1001 4 1
6 7 1002 2 1
7 8 1002 3 1
10 11 1003 3 1
11 12 1003 4 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350798.html
上一篇:我需要幫助在Pandas中創建一個聚合在一個列上的groupby
下一篇:通過分隔符熊貓分割值
