我有一個資料框(為簡單起見進行了調整),如下所示:
Location Code Technology ... Frequency
0 ABLSERVP Type A ... 850
2 ABLSERVP Type A ... 700
4 ABLSERVP Type B ... 850
... ... ... ... ...
1300 CSEY3 Type A ... 2100
1301 CSEY3 Type A ... 700
... ... ... ... ...
265064 CSEY1 Type A ... 750
265065 CSEY3 Type B ... 850
我正在努力實作的目標:
Location Code Technologies ... Type A's Type B's ...
0 ABLSERVP Type A,B ... 700,850 850 ...
... ... ... ... ... ... ...
265064 CSEY1 Type A ... 750 n/a ...
265065 CSEY3 Type A,B ... 700,2100 850 ...
有沒有辦法在不必遍歷整個資料幀的情況下執行此操作(我已經讀過這效率低下并且是最后的手段之一)。
我的嘗試:我首先根據位置代碼排序如下:
x=x.sort_values(by='Location Code')
我以為我可以通過執行以下操作來獲得所需的結果: df = x.groupby(['Location Code', 'Technology']).sum()
這顯然不起作用,因為它對頻率求和而不是列出它們。有什么幫助嗎?
uj5u.com熱心網友回復:
嘗試使用groupby,pivot和join:
tech = x.groupby("Location Code")["Technology"].agg(lambda x: ", ".join(x.unique().tolist()))
pivoted = (x.pivot_table(index="Location Code",
columns="Technology",
values="Frequency",
aggfunc=lambda x: ", ".join(x.astype(str)))
)
output = tech.to_frame().join(pivoted)
>>> output
Technology Type A Type B
Location Code
ABLSERVP Type A, Type B 850, 700 850
CSEY1 Type A 750 NaN
CSEY3 Type A, Type B 2100, 700 850
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360258.html
上一篇:即使指定了“match_parent”,使用ConstraintLayout的RecyclerView專案也不會填充整個螢屏寬度
