首页 > 解决方案 > 如何将 DF 合并到单独的行中?

问题描述

我有以下格式的 DF:

Match | Bookmaker | Over/Under Type | Over 1,5 | Under 1,5 | Over 2 | Under 2 

A vs B | Asianodds| 1,5             | 2,11     | 1,26      | n/a    |  n/a

A vs B | Pinnacle | 1,5             | 2,11     | 1,26      | n/a    |  n/a

A vs B | Asianodds| 2               |   n/a    | n/a       | 3,2    | 1,32   

A vs B | Pinnacle | 2               |   n/a    | n/a       | 3,3    | 1,42

C vs D | Asianodds| 1,5             | 2,31     | 1,25      | n/a    | n/a

C vs D | Pinnacle | 1,5             | 2,71     | 1,76      | n/a    | n/a

C vs D | Asianodds| 2               | n/a      |n/a        | 3,4    | 1,34

C vs D | Pinnacle | 2               | n/a      |n/a        | 3,5    | 1,45

如何操纵 DF 以达到这种格式(每个比赛/博彩公司一行):

Match | Bookmaker | Over 1,5 | Under 1,5 | Over 2 | Under 2 | 

A vs B | Asianodds| 2,11     | 1,26      | 3,2    | 1,32

A vs B | Pinnacle | 2,11     | 1,26      | 3,3    | 1,42 

C vs D | Asianodds| 2,31     | 1,25      | 3,4    | 1,34   

C vs D | Pinnacle | 2,71     | 1,76      | 3,5    | 1,45     

标签: pythonpandasdataframe

解决方案


首先删除'Over/Under Type列,然后GroupBy.first用于每组的第一个非缺失值:

df = df.drop('Over/Under Type', 1).groupby(['Match','Bookmaker'], as_index=False).first()
print (df)
    Match  Bookmaker Over 1,5 Under 1,5 Over 2 Under 2
0  A vs B  Asianodds     2,11      1,26    3,2    1,32
1  A vs B   Pinnacle     2,11      1,26    3,3    1,42
2  C vs D  Asianodds     2,31      1,25    3,4    1,34
3  C vs D   Pinnacle     2,71      1,76    3,5    1,45

推荐阅读