通过匹配变量将值从一个数据帧添加到另一个数据帧

2024-05-14 05:59:25 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个包含两列的数据帧df

           c1            c2
    0      v1            b1
    1      v2            b2
    2      v3            b3
    3      v4            b4
    4      v5            b5

第二个数据帧df2包含c1、c2和其他一些列

   c1 c2 c3  c4
0  "" b5 500 3
1  "" b2 420 7
2  "" b1 380 5
3  "" b2 470 9
4  "" b3 290 2

我的目标是将df2中c1的空值替换为df中与c2中的值相对应的值,因此df2中c1的前五个值应分别为v5、v2、v1、v2和v3。最好的方法是什么


Tags: 数据dfv3b2b1v2v4b3
2条回答

类似这样的东西可能就是你想要的:

import pandas as pd
import numpy as np
# remove the c1 column from df2
df2.drop("c1", axis=1, inplace=True)
# merge the 2 dataframes and get the c1 values corresponding to c2
newdf = df.merge(df2, on="c2")

如果列中确实缺少值(即NAs和存在值的某些行,则解决方案将不同)

一个简单的方法是使用基于相似列的熊猫合并

df2.drop('c1', axis=1, inplace=True)
main_df = pd.merge(df2, df, on="c2", how="left")
df2['c1'] = main_df['c1']
df2.columns = ['c1','c2','c3','c4']

相关问题 更多 >