我嘗試為大資料集找出處理以下問題的有效方法:資料每天包含多行,其中包含指定的代碼(字串)和作為列的評級。我嘗試為此串列中的所有字串創建一個包含列的新資料集;string=['239', '345', '346'] 并且新資料集應包含每天的評分平均值。這樣我就可以得到指定數字的時間序列。
這將是一個簡單的示例資料集:
df1 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-03'],
'Code':['P:346 K,329 28', 'N2:345 P239', 'P:346 K2', 'E32 345', 'Q2_325', 'P;235 K345', '2W345', 'Pq-245 3460239'],
'Ratings':[9.0, 8.0, 5.0, 3.0, 2, 3, 6, 5]})
我試圖實作與該表類似的東西,但到目前為止我無法有效地完成它。
strings = ['239', '345', '346']
df2 = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03'],
'239':[8.5, 'NA', '5'],
'345':[8, 4, 'NA'],
'346':[7, 'NA', 5],})
非常感謝您的幫助:)
uj5u.com熱心網友回復:
IIUC 你可以extract在code列中的字串,然后pivot:
print (df1.assign(Code=df1["Code"].str.extractall(f"({'|'.join(strings)})").groupby(level=0).agg(tuple))
.explode("Code")
.pivot_table(index="Date", columns="Code", values="Ratings", aggfunc="mean"))
Code 239 345 346
Date
2021-01-01 8.5 8.0 7.0
2021-01-02 NaN 4.0 NaN
2021-01-03 5.0 NaN 5.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333463.html
