[英]Python Ordered Tuple list ranked by absolute value
我試圖根據信息行創建一個有序的元組列表:
team stat1 explain1 stat2 explain2 stat3 explain3
green +10 inc due to.. -8 dec due to.. +2 inc due to..
blue -6 dec due to.. +5 inc due to.. +8 inc due to..
red +5 inc due to.. +10 inc due to.. -2 dec due to..
我想為每個團隊創建一個有序的元組列表(按絕對值),所以'團隊''藍色'看起來像:
tuple list based on above order: Abs value ordered tuple list:
-6: dec due to.. 8: incr due to..
5: inc due to.. -6: decr due to..
8: inc due to.. 5: incr due to..
轉置您的數據框以形成每個團隊三行,每行包含團隊名稱,統計更改值以及該單個統計信息的說明。 添加一個具有絕對值的新列,以便您可以輕松地對其進行排序:
transposed_df = pd.DataFrame({
'team': np.repeat(df.transpose().iloc[0].values, 3),
'stat': pd.concat((
df.transpose().iloc[1::2, i]
for i in range(3)), ignore_index=True),
'explain': pd.concat((
df.transpose().iloc[2::2, i]
for i in range(3)), ignore_index=True),
'abs_stat': pd.concat((
df.transpose().iloc[1::2, i]
for i in range(3)), ignore_index=True).abs(),
}, columns=['team', 'stat', 'explain', 'abs_stat'])
現在生成排序輸出是微不足道的:
transposed_df.sort_values(by=['team', 'abs_stat'], ascending=False).drop('abs_stat', axis=1)
這會產生:
team stat explain
7 red 10 inc due to..
6 red 5 inc due to..
8 red -2 dec due to..
0 green 10 inc due to..
1 green -8 dec due to..
2 green 2 inc due to..
5 blue 8 inc due to..
3 blue -6 dec due to..
4 blue 5 inc due to..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.