我不知道如何在我的 python 腳本中完成某個任務。
我有一個資料框,其中包含特定主題的媒體報道。我的專欄之一命名了特定文章的作者,例如...

我正在嘗試創建一個資料透視表來顯示列中每個記者的總數,如下所示
datajournalist = company1_topline.pivot_table(index='AuthorUsername', values='ContentID', aggfunc= np.count_nonzero )
這會給我類似的東西
AuthorUsername count_nonzero
Aaron Mehta 1
Aamer Madhani 1
Aamer Madhani ; Ben Fox 1
我正在尋找的是一種讓資料透視表也計算出現在多個值單元格中的名稱的方法,以獲得每個作者的真實計數。因此,例如,具有“Aamer Madhani ; Ben Fox”的行也將計入“Aamer Madhani”的計數,因此僅“Aamer Madhani”的行將計數為 2 而不是 1 等等......是有辦法嗎?在 excel 中,這可以通過 SUMIF 來實作,但我不知道如何使用 Python/Pandas 來實作。
期望的輸出
AuthorUsername count_nonzero
Aaron Mehta 1
Aamer Madhani 2
Aamer Madhani ; Ben Fox 1
如果有人能指出我正確的方向,將不勝感激。
uj5u.com熱心網友回復:
隨著您的 DataFrame 具有這樣的AuthorUsername列:
AuthorUsername
0 Aaron Mehta
1 Aamer Madhani
2 Aamer Madhani ; Ben Fox
你可以做:
import collections
# Remove leading and trailing spaces (if any).
df['AuthorUsername'] = df['AuthorUsername'].str.strip()
# Get unique authors and their counts.
authors_counts = collections.Counter(df['AuthorUsername'].str.split('\s*;\s*').sum())
# Add to new column.
real_counts = collections.defaultdict(lambda: 1, authors_counts)
df['count_nonzero'] = [real_counts[a] for a in df['AuthorUsername']]
print(df)
結果:
AuthorUsername count_nonzero
0 Aaron Mehta 1
1 Aamer Madhani 2
2 Aamer Madhani ; Ben Fox 1
評論后編輯 - 總結更多指標:
在評論之后,這是一個更通用的版本,也可以對Metrics列進行匯總,可能還有其他內容。
輸入資料框:
AuthorUsername Metrics
0 Aaron Mehta 1.3
1 Aamer Madhani 2.0
2 Aamer Madhani ; Ben Fox 0.5
代碼:
df['AuthorUsername'] = df['AuthorUsername'].str.strip()
df['single_authors'] = df['AuthorUsername'].str.split('\s*;\s*')
df['count_nonzero'] = 1
single_metrics = df.explode('single_authors').groupby('single_authors').sum()
multiple_metrics = df[df['single_authors'].map(len) > 1].groupby('AuthorUsername').sum()
all_metrics = pd.concat([single_metrics, multiple_metrics]).rename_axis('AuthorUsername').reset_index()
df = df.drop(columns=['Metrics', 'count_nonzero', 'single_authors']).merge(all_metrics, how='left', on='AuthorUsername')
print(df)
結果:
AuthorUsername Metrics count_nonzero
0 Aaron Mehta 1.3 1
1 Aamer Madhani 2.5 2
2 Aamer Madhani ; Ben Fox 0.5 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/474372.html
標籤:python-3.x 擅长 熊猫
上一篇:在Excel中按順序添加多個前綴
