import pandas as pd
data = {‘id’: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
‘name’: [‘John’, ‘Anna’, ‘John’, ‘Anna’,
‘John’, ‘Anna’, ‘John’, ‘Anna’,
‘John’, ‘Anna’]}
df = pd.DataFrame(data)
duplicates = df.duplicated(subset=[‘name’])
counts = df[duplicates].groupby([‘name’]).size().reset_index(name=’count’)
print(counts)
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316131103_65.png)
df:
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316131246_13.png)
duplicates = df.duplicated(subset=[‘name’])
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316131641_17.png)
duplicates 為一個bool Series
透過呼叫 df.duplicated(subset=['name']) 來產生的。
其中subset 參數指定了要檢查是否有重複值的欄位,
這裡是 name 欄位。
可以用來切片
只保留對應到True的元素
counts = df[duplicates].groupby([‘name’]).size().reset_index(name=’count’)
一步一步做分解動作
df[duplicates]:
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316132030_85.png)
df[duplicates] 會篩選出 df 中
所有被標示為重複的紀錄
只保留對應到True(重複)的元素
注意最左邊的index,已經沒有0,1
df[duplicates].groupby([‘name’]).size()
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316133109_31.png)
呼叫 groupby 方法,
以 name 欄位為分組依據(name變成index了),
並呼叫 size 方法計算每個分組的大小,
也就是重複出現的次數。
其type為Series:
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316151507_14.png)
df[duplicates].groupby([‘name’]).size().reset_index(name=’count’)
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316133443_71.png)
呼叫 reset_index 方法,
將 name 欄位轉換為普通欄位,
並將計算結果命名為 count。
最終產生的 counts
groupby操作的結果是一個Series,
其中包含數量值,
而組的名稱(在這種情況下,是 ‘name’ 列中的值)則作為索引。
通過調用 .reset_index(name=’count’),
你將這個Series轉換回一個DataFrame,
‘name’ 索引變成DataFrame的一個列,
而計數值則成為另一個名為 ‘count’ 的列。
在這種情況下,’count’ 列明顯包含計數值,
因為它是通過在groupby對象上調用 size() 方法創建的,
該方法計算每個組的出現次數。
groupby() :
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230316141426_82.png)
就算資料是DataFrame,
有”fruit” “price”兩欄
經過groupby(“fruit”).size()
index就是”fruit”, values為重複次數
必然是只有一欄資料的Series
.reset_index(name=”count”)
當然只會為唯一一欄命名
.reset_index(name=”count”)
.to_frame(name=”count”).reset_index()
同效果
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230317083859_100.png)
.to_frame(name=”count”) .reset_index()
去掉結尾的.reset_index()
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230317084205_91.png)
to_frame() 方法将当前 Series 转换为一个 DataFrame,
新 DataFrame 只有一 column,
并可以通过 name 参数指定该column的名称。
groupby() 可以對兩欄作用:
![Python: pandas.DataFrame 如何找出重複值並計算重複次數? counts = df[duplicates] .groupby(['name']) .size() .reset_index(name='count') - 儲蓄保險王](https://savingking.com.tw/wp-content/uploads/2023/03/20230317130219_79.png)
推薦hahow線上學習python: https://igrape.net/30afN







![Python: list.index() 只能找到第一個元素的index,若元素有重複,如何找出所有index? indexes = [index for index, value in enumerate(my_list) if value == target] Python: list.index() 只能找到第一個元素的index,若元素有重複,如何找出所有index? indexes = [index for index, value in enumerate(my_list) if value == target]](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2024/10/20241010101216_0_12b6c0.png?quality=90&zoom=2&ssl=1&resize=350%2C233)


近期留言