Python 如何将DF合并到单独的行中?
我有以下格式的DF:Python 如何将DF合并到单独的行中?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下格式的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
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以达到此格式(每场比赛/收受赌注者一行):
首先删除类型列上方/下方的
,然后用于每组的第一个非缺失值:
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
请解释你想如何整合一些为什么这还没有达到目的,DF仍然像以前一样。。有什么问题吗?@BlackElefant是否n/a
缺少值?在我的解决方案之前,可能需要df=df.replace('n/a',np.nan)
。事实上它确实有效,我只是没有在循环的正确位置应用它。谢谢你的解决方案!
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