为什么不能分配与原始熊猫 df 中名称不同的多个列?


odds_ft_home_team_win  odds_ft_draw  odds_ft_away_team_win
0                 0.850212      0.100281               0.049506
1                 0.081114      0.146371               0.772515
2                 0.486790      0.266734               0.246476
3                 0.355737      0.301008               0.343255
4                 0.294952      0.299490               0.405559

这是我要分配给上一个数据帧df的数据帧prob_odds

df.loc[:,["w","d","a"]]=prob_odds

正如您所看到的,我希望新列的名称与原始数据帧中的名称不同。这将返回一个数据帧,该数据帧具有具有NA值的列"w","d","a"。如果我更改prob_odds数据帧中列的名称以匹配df中的名称,则赋值有效。为什么?有什么方法可以绕过这一点,这样您就可以分配新列,而不必事先重命名旧列。

您可以在没有.loc的情况下(因为.loc会搜索现有的索引和列进行操作(:

N = 10
df = pd.DataFrame({'a': 1 * np.ones(N), 'b': 2 * np.ones(N)})
df[['c', 'd']] = pd.DataFrame({'x': 3 * np.ones(N), 'y': 4 * np.ones(N)})
df

输出:

a    b    c    d
0  1.0  2.0  3.0  4.0
1  1.0  2.0  3.0  4.0
2  1.0  2.0  3.0  4.0
3  1.0  2.0  3.0  4.0
4  1.0  2.0  3.0  4.0
5  1.0  2.0  3.0  4.0
6  1.0  2.0  3.0  4.0
7  1.0  2.0  3.0  4.0
8  1.0  2.0  3.0  4.0
9  1.0  2.0  3.0  4.0

附言:为了匹配您的命名,df[["w","d","a"]] = prob_odds应该可以使用

最新更新