TownA = [35, 43, 36, 39, 28, 28, 29, 25, 38, 27, 26, 32, 29, 40, 35, 41, 37, 31, 45, 34]
TownB = [27, 15, 4, 41, 49, 25, 10, 30]
Rural = [8, 14, 12, 15, 30, 32, 21, 20, 34, 7, 11, 24]
tv_viewing = TownA TownB Rural
labels = np.array(["TownA", "TownB", "Rural"])
stratum = np.repeat(labels, [len(TownA), len(TownB), len(Rural)], axis=0)
sample = pd.DataFrame()
sample["viewership"] = tv_viewing
sample["stratum"] = stratum
sample.groupby("stratum").mean()
上面的代碼生成一個如下所示的資料框:
| 地層 | 收視率 |
|---|---|
| 鄉村的 | 19.00 |
| 鎮A | 33.9 |
| 鎮B | 25.125 |
我的目標是將這個資料框與下面的字典相乘:
Population = {"TownA": 155, "TownB": 62, "Rural": 93}
要獲得所需的結果:
| 地層 | 收視率 |
|---|---|
| 鄉村的 | 1767 |
| 鎮A | 5254.5 |
| 鎮B | 1557.75 |
我對最終結果并不挑剔,產品可以是一個新的專欄。
我能夠使用以下代碼獲得解決方案:
a = sample.groupby("stratum").mean().reset_index()
b = pd.DataFrame.from_dict(N, orient='index').reset_index()
ab = pd.merge(a, b, left_on='stratum', right_on='index')
ab["product"] = ab["viewership"]*ab[0]
該代碼生成此表:
| 地層 | 收視率 | 指數 | 0 | 產品 | |
|---|---|---|---|---|---|
| 0 | 鄉村的 | 19.000 | 鄉村的 | 93 | 1767.00 |
| 1 | 鎮A | 33.900 | 鎮A | 155 | 5254.50 |
| 2 | 鎮B | 25.125 | 鎮B | 62 | 1557.75 |
我想知道是否有更優雅的方法來解決這個問題,而無需重置索引并使用諸如 apply 之類的東西。
我試過這段代碼:
a = sample.groupby("stratum").mean().apply(lambda x: x.viewership * N[x.stratum])
只是為了得到這個錯誤:“系列”物件沒有屬性“收視率”
uj5u.com熱心網友回復:
使用mulaxis = 0的方法:
out = sample.groupby("stratum").mean()
out.mul(Population, axis = 0 )
viewership
stratum
Rural 1767.00
TownA 5254.50
TownB 1557.75
uj5u.com熱心網友回復:
您可以將索引轉換為系列,然后.map()在其上使用:
sample["result"] = sample["viewership"] * sample.index.to_series().map(Population)
print(sample)
這輸出:
stratum viewership result
0 Rural 19.000 1767.00
1 TownA 33.900 5254.50
2 TownB 25.125 1557.75
uj5u.com熱心網友回復:
在groupby之后,stratum是索引。我們可以將收視率與具有相同索引的系列相乘:
(sample.groupby("stratum").mean().viewership *
pd.Series({"TownA": 155, "TownB": 62, "Rural": 93}))
Rural 1767.00
TownA 5254.50
TownB 1557.75
dtype: float64
請注意,這pd.Series(mapping)會創建一個新系列,其中鍵是索引,值是系列值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495540.html
上一篇:關閉按鈕不會關閉模態
下一篇:Groovy遍歷Maps的Map
