我有一個size每日大小的 DataFrame并基于第二個 DataFrame group,我嘗試計算每天組內的相對大小。
size = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
'01K W':[10, 15, 20, 18, 13],
'02K W':[14, 24, 'nan', 'nan', 18],
'03K W':[13, 12, 16, 21, 19],
'04K W':[16, 25, 15, 31, 20]})
size = size.replace('nan', np.nan)
group = pd.DataFrame({
'ID':['01K W', '02K W', '03K W', '04K W'],
'Group':['Group1', 'Group1', 'Group2', 'Group1']})
我嘗試的是一個類似于result分配了相對權重的 DataFrame 。
result = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
'01K W':[0.25, 0.23, 0.57, 0.37, 0.25],
'02K W':[0.35, 0.38, 0, 0, 0.35],
'03K W':[1, 1, 1, 1, 1],
'04K W':[0.4, 0.39, 0.43, 0.63, 0.39]})
大資料集有沒有有效的方法?謝謝!
uj5u.com熱心網友回復:
如果您希望正確計算總和,則應將“nan”替換為 0。然后按組分組并轉換:
size = pd.DataFrame({
'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
'01K W':[10, 15, 20, 18, 13],
'02K W':[14, 24, 'nan', 'nan', 18],
'03K W':[13, 12, 16, 21, 19],
'04K W':[16, 25, 15, 31, 20]})
group = pd.DataFrame({
'ID':['01K W', '02K W', '03K W', '04K W'],
'Group':['Group1', 'Group1', 'Group2', 'Group1']})
size = size.replace('nan', 0).set_index("Date").T
size["Groups"] = list(group['Group'])
print(size.groupby("Groups").transform(lambda x: x/x.sum()).T)
輸出:
01K W 02K W 03K W 04K W
Date
2021-01-01 0.250000 0.350000 1.0 0.400000
2021-01-02 0.234375 0.375000 1.0 0.390625
2021-01-03 0.571429 0.000000 1.0 0.428571
2021-01-04 0.367347 0.000000 1.0 0.632653
2021-01-05 0.254902 0.352941 1.0 0.392157
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/360942.html
