輸入:
(上傳圖片時出錯,否則我總是這樣做。)
import pandas as pd
df = pd.DataFrame(
{
'keyword': ['app store', 'app marketing', 'app store', 'app marketing'],
'rank': [10, 12, 10, 12],
'impression': [100, 200, 100, 200],
'landing page': ['ngl.com/123', 'ngl.com/123', 'oats.com/123', 'oats.com/123']
}
)
df
輸出:
import pandas as pd
df = pd.DataFrame(
{
'keyword': ['app', 'store', 'marketing', 'app', 'store', 'marketing'],
'mean_rank': [11, 10, 12, 11, 10, 12],
'impression': [300, 100, 200, 300, 100, 200],
'landing page': ['ngl.com/123', 'ngl.com/123', 'ngl.com/123', 'oats.com/123', 'oats.com/123', 'oats.com/123'],
'keyword_length':[3, 5, 9, 3, 5, 9],
'impression_per_char':[75, 16.67, 20, 75, 16.67, 20]
}
)
df
也許這可以用來在關鍵字中查找單詞:
words = 'app store'
re.findall('\w ', words.casefold())
mean_rank = 關鍵字中單詞的平均排名。
keyword_length = 關鍵字中單詞的長度。
impress_per_char = 展示次數/(keyword_length 1)
實際資料集有 10,000 行。這個是我自己做的,有問題請指教。在接下來的幾個小時里,我將同時進行這方面的作業。
此外,對于“mean_rank”列,您可以采用加權平均值或一些(可能也)使用“impression”、“keyword_length”和/或“impression_per_char”的組成方程來找到合理的排名。如果您這樣做,那么我將選擇它作為最終答案。
uj5u.com熱心網友回復:
將Series.str.casefoldwithSeries.str.split和DataFrame.explode用于單獨的單詞,通過 獲取單詞的長度Series.str.len,然后聚合sum并mean最后創建impression_per_char列:
df = df.assign(keyword = df['keyword'].str.casefold().str.split()).explode('keyword')
df['keyword_length'] = df['keyword'].str.len()
df = (df.groupby(['keyword','landing page', 'keyword_length' ], as_index=False, sort=False)
.agg(mean_rank=('rank','mean'), impression=('impression', 'sum')))
df['impression_per_char'] = df['impression'].div(df['keyword_length'].add(1))
print (df)
keyword landing page keyword_length mean_rank impression \
0 app ngl.com/123 3 11 300
1 store ngl.com/123 5 10 100
2 marketing ngl.com/123 9 12 200
3 app oats.com/123 3 11 300
4 store oats.com/123 5 10 100
5 marketing oats.com/123 9 12 200
impression_per_char
0 75.000000
1 16.666667
2 20.000000
3 75.000000
4 16.666667
5 20.000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516526.html
上一篇:用字串串列替換熊貓資料框中的字串
