3 回答

TA貢獻1876條經驗 獲得超7個贊
關于矢量化解決方案的建議
ndf = pd.DataFrame({'a':np.repeat(df.cost_col.values, df.names_col.str.len()),
'b':np.concatenate(df.names_col.values)})
產量
a b
0 3 milk
1 3 eggs
2 3 cookies
3 5 water
4 5 milk
5 5 yogurt
6 7 cookies
7 7 diaper
8 7 yogurt
然后就是普通groupy+mean
ndf.groupby('b').mean()
a
b
cookies 5
diaper 7
eggs 3
milk 4
water 5
yogurt 6

TA貢獻1877條經驗 獲得超6個贊
IIUC將您的列表弄平(嵌套)
pd.DataFrame(data=df.cost_col.repeat(df.names_col.str.len()).values,index=np.concatenate(df.names_col.values)).mean(level=0)
Out[221]:
0
milk 4
eggs 3
cookies 5
water 5
yogurt 6
diaper 7

TA貢獻1765條經驗 獲得超5個贊
Set()是刪除重復項的最簡單答案。
* list_name表示法用于擴展/解壓縮列表。
l = [["milk", "eggs", "cookies"],
["water", "milk", "yogurt"],
["cookies", "diaper", "yogurt"]]
c = set([*l[0], *l[1], *l[2]])
{'cookies', 'eggs', 'diaper', 'yogurt', 'water', 'milk'}
并將其用作您的熊貓列名稱。您可以根據需要使用list()將其轉換回列表
添加回答
舉報