gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:46:10 25 4
gpt4 key购买 nike

第一个数据集:这些玩家参加锦标赛。这些数据集记录球员和球队。

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],
})

如何获得这个结果?

最佳答案

用途:

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. 首先按 cumcount 计算每组的唯一值
  2. 通过set_index创建MultiIndex , reshape unstack并按 sort_index 更改第一级的顺序
  3. 通过列表理解压平MultiIndex
  4. 最后join到原始DataFrame

关于python - 在 python Dataframes 中,如何添加与其他数据框中的单行相关的多行作为附加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51321153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com