在python数据帧中,如何在其他数据帧中添加与单行相关的多行作为附加列?

2024-10-01 04:54:53 发布

您现在位置:Python中文网/ 问答频道 /正文

第一组数据:参加比赛的球员。这些数据集 记录球员和球队。你知道吗

df_team = pd.DataFrame({
'Country': ["India","India","India","AUS","AUS","AUS"],
'Player': ["SACHIN","RAHUL","SAURBH","STEVE","SHEN","RICKY"]
})

第二个数据集:这些记录集有击球手在第一局和第二局比赛中的得分。注意一些球员,而不是打一些比赛。你知道吗

df_scores = pd.DataFrame({
    'Player': ["SACHIN", "SACHIN", "RAHUL", "RAHUL", "SAURBH", "STEVE", "RICKY", "RICKY", "RICKY", "RICKY"],
    'INNG1': [70, 10, 55, 75, 100, 7, 75, 55, 45, 17],
    'INNG2': [50, 20, 35, 25, 100, 17, 25, 45, 65, 71]
})

需要结果数据集:这里我们希望每个团队有一行。所有击球手的得分将记录在一行中。我们需要这个反馈给神经网络,因此位置也很重要。你知道吗

df_result = pd.DataFrame({
    'Country': ["India", "India", "India", "AUS", "AUS", "AUS"],
    'Player': ["SACHIN", "RAHUL", "SAURBH", "STEVE", "SHEN", "RICKY"],
    '1-INNG1': [70, 55, 100, 7, 'NA', 75],
    '1-INNG2': [50, 55, 100, 7, 'NA', 25],
    '2-INNG1': [10, 75, 'NA', 'NA', 'NA', 55],
    '2-INNG2': [20, 75, 'NA', 'NA', 'NA', 45],
    '3-INNG1': ['NA', 'NA', 'NA', 'NA', 'NA', 45],
    '3-INNG2': ['NA', 'NA', 'NA', 'NA', 'NA', 65],
    '4-INNG1': ['NA', 'NA', 'NA', 'NA', 'NA', 17],
    '4-INNG2': ['NA', 'NA', 'NA', 'NA', 'NA', 71],
})

如何得到这个结果?你知道吗


Tags: 数据dataframedfpdplayer球员naindia
1条回答
网友
1楼 · 发布于 2024-10-01 04:54:53

用途:

g = df_scores.groupby('Player').cumcount().add(1)
df = df_scores.set_index(['Player',g]).unstack().sort_index(level=1, axis=1)
df.columns = ['{}-{}'.format(j, i) for i, j in df.columns]
print (df)
        1-INNG1  1-INNG2  2-INNG1  2-INNG2  3-INNG1  3-INNG2  4-INNG1  4-INNG2
Player                                                                        
RAHUL      55.0     35.0     75.0     25.0      NaN      NaN      NaN      NaN
RICKY      75.0     25.0     55.0     45.0     45.0     65.0     17.0     71.0
SACHIN     70.0     50.0     10.0     20.0      NaN      NaN      NaN      NaN
SAURBH    100.0    100.0      NaN      NaN      NaN      NaN      NaN      NaN
STEVE       7.0     17.0      NaN      NaN      NaN      NaN      NaN      NaN

df_result = df_team.join(df, on='Player')
print (df_result)
  Country  Player  1-INNG1  1-INNG2  2-INNG1  2-INNG2  3-INNG1  3-INNG2  \
0   India  SACHIN     70.0     50.0     10.0     20.0      NaN      NaN   
1   India   RAHUL     55.0     35.0     75.0     25.0      NaN      NaN   
2   India  SAURBH    100.0    100.0      NaN      NaN      NaN      NaN   
3     AUS   STEVE      7.0     17.0      NaN      NaN      NaN      NaN   
4     AUS    SHEN      NaN      NaN      NaN      NaN      NaN      NaN   
5     AUS   RICKY     75.0     25.0     55.0     45.0     45.0     65.0   

   4-INNG1  4-INNG2  
0      NaN      NaN  
1      NaN      NaN  
2      NaN      NaN  
3      NaN      NaN  
4      NaN      NaN  
5     17.0     71.0  

解释:

  1. 首先按^{}对每个组的唯一值进行计数
  2. ^{}创建MultiIndex,按^{}重塑,按^{}更改第一级的顺序
  3. 通过列表理解展平MultiIndex
  4. 从最后一个^{}到原始DataFrame

相关问题 更多 >