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

Why can't you assign multiple columns that are not the same name as in the original pandas 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

这是一个数据框 prob_odds 我想分配给我之前的数据框 df

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

如您所见,我希望新列的名称与原始数据框中的名称不同。这个 returns 一个数据框,其中的列 "w","d","a" 具有 NA 值。如果我更改 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

P.S。为了匹配您的命名,df[["w","d","a"]] = prob_odds 应该有效