比方說,我有電話號碼A,他們給幾個人打電話B
A B
123 987
123 987
123 124
435 567
435 789
653 876
653 876
999 654
999 654
999 654
999 123
我想找出這個人給誰A打電話的次數最多以及次數。
輸出:
A B Count
123 987 2
435 567 or789 1
653 876 2
999 654 3
怎么能想到,
A B
123 987 2
124 1
435 567 1
789 1
653 876 2
999 654 3
123 1
有人可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
試試這個
# count the unique values in rows
df.value_counts(['A','B']).sort_index()
A B
123 124 1
987 2
435 567 1
789 1
653 876 2
999 123 1
654 3
dtype: int64
要獲得每個唯一 A 的最高值:
v = df.value_counts(['A','B'])
# remove duplicated rows
v[~v.reset_index(level=0).duplicated('A').values]
A B
999 654 3
123 987 2
653 876 2
435 567 1
dtype: int64
uj5u.com熱心網友回復:
默認情況下使用SeriesGroupBy.value_countswhich 排序值,因此按以下方式獲取第一A行GroupBy.head:
df = df.groupby('A')['B'].value_counts().groupby(level=0).head(1).reset_index(name='Count')
print (df)
A B Count
0 123 987 2
1 435 567 1
2 653 876 2
3 999 654 3
另一個想法:
df = df.value_counts(['A','B']).reset_index(name='Count').drop_duplicates('A')
print (df)
A B Count
0 999 654 3
1 123 987 2
2 653 876 2
4 435 567 1
uj5u.com熱心網友回復:
我使用了 groupby 函式和size()方法。
import pandas as pd
df = pd.DataFrame({'A' : [123, 123, 123, 435 ,435, 653, 653, 999, 999, 999, 999],
'B': [987, 987, 124, 567, 789, 876, 876, 654, 654, 654, 123]})
df = df.groupby(['A', 'B']).size()
print(df)
輸出:
A B
123 124 1
987 2
435 567 1
789 1
653 876 2
999 123 1
654 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/479954.html
上一篇:如何將字典鍵作為資料框的列?
