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
应该可以使用