在pandas数据框中从另一个具有不同索引的数据框中添加新列

Jay*_*ree 4 python dataframe pandas

这是我的原始数据框。 原始数据框 这是我的第二个数据框,其中包含一列。 第二个数据帧 我想将第二个数据框的列添加到原始数据框的末尾。两个数据框的索引都不同。我确实是这样

feature_file_df['RESULT']=RESULT_df['RESULT']
Run Code Online (Sandbox Code Playgroud)

结果列已添加,但所有值均为NaN 增加结果

如何添加有值的列

cs9*_*s95 10

假设数据框的大小相同,则可以将分配RESULT_df['RESULT'].values给原始数据框。这样,您不必担心索引问题。

# pre 0.24
feature_file_df['RESULT'] = RESULT_df['RESULT'].values
# >= 0.24
feature_file_df['RESULT'] = RESULT_df['RESULT'].to_numpy()
Run Code Online (Sandbox Code Playgroud)

最少的代码样本

df
          A         B
0 -1.202564  2.786483
1  0.180380  0.259736
2 -0.295206  1.175316
3  1.683482  0.927719
4 -0.199904  1.077655

df2

           C
11 -0.140670
12  1.496007
13  0.263425
14 -0.557958
15 -0.018375
Run Code Online (Sandbox Code Playgroud)

让我们先尝试直接分配。

df['C'] = df2['C']
df

          A         B   C
0 -1.202564  2.786483 NaN
1  0.180380  0.259736 NaN
2 -0.295206  1.175316 NaN
3  1.683482  0.927719 NaN
4 -0.199904  1.077655 NaN
Run Code Online (Sandbox Code Playgroud)

现在,分配由返回的数组.values(或.to_numpy()对于熊猫版本> 0.24)。.values返回一个numpy没有索引的数组。

df2['C'].values 
array([-0.141,  1.496,  0.263, -0.558, -0.018])

df['C'] = df2['C'].values
df

          A         B         C
0 -1.202564  2.786483 -0.140670
1  0.180380  0.259736  1.496007
2 -0.295206  1.175316  0.263425
3  1.683482  0.927719 -0.557958
4 -0.199904  1.077655 -0.018375
Run Code Online (Sandbox Code Playgroud)

  • 这个方法不会引发以下警告吗?`正在尝试在 DataFrame 的切片副本上设置值。请尝试使用 .loc[row_indexer,col_indexer] = value 代替`。也许只有当您想要更新列序列而不是“C”时。从另一个数据帧添加列序列的规范方法是什么? (2认同)