【发布时间】:2023-02-22 01:35:48
【问题描述】:
我对 Python 还是个新手,我正在尝试了解各种可能性以及我能够使用数据帧执行的操作的局限性。我将提供我拥有的 2 个数据帧的示例以及我希望实现的输出类型。
df_1 = {
'Rank': [64, 102, 34],
'Team': ["AR Lit Rock", "Abl Christian", "Air Force",],
'2022': [73.8, 71.5, 67.2,],
'L3': [71.3, 77.3, 69.0,],
'Home': [78.2, 73.6, 70.1,]
'Away': [71.4, 70.2, 62.2,],
}
df_2 = {
'Rank': [354, 284, 83],
'Team': ["AR Lit Rock", "Abl Christian", "Air Force",],
'2022': [80.7, 74.0, 67.0,],
'L3': [78.7, 72.0, 75.3,],
'Home': [75.3, 69.1, 65.0,]
'Away': [83.7, 77.1, 70.3,],
}
我正在寻找一个最终结果,它将 2 个数据帧合并为 1,同时平均“排名”,将“团队”合并为 1,这样它就不会重复,以及自定义列以使用新的列名称区分其余部分。
输出:
| Rank | Team | 2022 PF | 2022 PA | L3 PF | L3 PA | Home PF | Home PA | Away PF | Away PA |
|---|---|---|---|---|---|---|---|---|---|
| 209 | AR Lit Rock | 73.8 | 80.7 | 71.3 | 78.7 | 78.2 | 75.3 | 71.4 | 83.7 |
| 193 | Abl Christian | 71.5 | 74.0 | 77.3 | 72.0 | 73.6 | 69.1 | 70.2 | 77.1 |
| 58.5 | Air Force | 67.2 | 67.0 | 69.0 | 75.3 | 70.1 | 65.0 | 62.2 | 70.3 |
我尝试了一些 concat 并使用基于特定列的平均值来获得“排名”的平均值,但是当我输出时,这也最终删除了其他列。
final_df = pd.concat((df_1, df_2)).groupby('Team', as_index=False, sort=False)['Rank'].mean()
当涉及到将 2 组合起来并将不同的列名输出为特定顺序时,我什至不确定这是否可能只是为了寻找一些见解。
【问题讨论】: