为什么不能分配多个与原始 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
应该有效
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
应该有效