python - 两个 DF、pandas 的组合

标签 python pandas dataframe

我有两个 df,

第一个 df

A B C
1 1 3
1 1 2
1 2 5
2 2 7
2 3 7

第二个df

B D
1 5
2 6
3 4

B在两个dfs中具有相同的含义。将列 D 添加到第一个 df 中的相应值的最简单方法是什么?输出应该是:

A B C D
1 1 3 5
1 1 2 5
1 2 5 6
2 2 7 6
2 3 7 4

最佳答案

执行“左转”merge在您的情况下,在“B”列:

In [206]:

df.merge(df1, how='left', on='B')
Out[206]:
   A  B  C  D
0  1  1  3  5
1  1  1  2  5
2  1  2  5  6
3  2  2  7  6
4  2  3  7  4

另一种方法是将第二个 df 上的“B”设置为索引,然后调用 map :

In [215]:

df1 = df1.set_index('B')
df['D'] = df['B'].map(df1['D'])
df
Out[215]:
   A  B  C  D
0  1  1  3  5
1  1  1  2  5
2  1  2  5  6
3  2  2  7  6
4  2  3  7  4

关于python - 两个 DF、pandas 的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26163563/

相关文章:

python - 如果特定测试失败,则剩余的 pytest 测试失败

python - 经过多次尝试后,我无法使用 Shutil.move 将文件从一个文件夹移动到另一个文件夹

python - 使用 pysandbox 限制功能 (RF)

python pandas : assign control vs. 根据 % 随机处理分组

python - 用数据框中列表中的值替换索引

python - 使 numpy.savez 具有确定性

python - 我想使用 matplotlib 绘制数据图表,但它显示 float() : 2014-12-10 的无效文字

python - 在 Pandas 中使用 pd.Grouper 时获取所有组

r - 一种有效的方法来对带有R中的NA值的行进行子集

有条件地替换值,同时忽略 NA