【发布时间】:2022-12-31 14:12:11
【问题描述】:
在这里编码的新手,如果问题没有很好地形成或之前已经回答,请提前道歉。 我有一个任务是通过使用嵌套的 For 循环完成的。我想知道是否可以在没有循环的情况下以更类似于 python 的方式完成同样的工作。进一步来说; 我必须填充以下数据框
| Index | NFL | NBA | NHL | MLB |
|---|---|---|---|---|
| NFL | p val | p val | p val | p val |
| NBA | p val | p val | p val | p val |
| NHL | p val | p val | p val | p val |
| MLB | p val | p val | p val | p val |
其中 p val 是来自“W/L 比率”的 stats.ttest_rel() 方法的 p 值。传递给 ttest 的列来自 4 个数据帧 - 上面每个联赛的一个数据帧(其中包含所述“W/L 比率”列和一个区域列。区域列是数据帧之间的公共键。示例如下;
| Index | region | W/L Ratio |
|---|---|---|
| 0 | Boston | 0.66 |
| 1 | Denver | 0.55 |
我想将运动组合中的 W/L 比率列传递给测试,以便一个地区在这两种运动中都有团队。
我通过执行以下代码来做到这一点
`
sport = [merge_nfl,merge_nba,merge_nhl,merge_mlb] # our league dataframes in a list
sports = ['NFL', 'NBA', 'NHL', 'MLB']
p_values = pd.DataFrame({k:np.nan for k in sports}, index=sports)
for i in range(4):
for j in range(4):
merge_df_final = pd.merge(sport[i],sport[j],how='inner',left_on='Metropolitan area', right_on='Metropolitan area')
p_values.iloc[i,j] = stats.ttest_rel(merge_df_final.iloc[:,1],merge_df_final.iloc[:,2])[1]
我想知道是否可以在不使用嵌套循环的情况下获得相同的结果。
谢谢
【问题讨论】:
标签: python pandas list-comprehension