python - 如何更改两个数据帧之间公共(public)元素的值?

标签 python pandas dataframe

我有一个名为 df1 的 df,如下所示:

        NAME       CODE       TYPE ........... many other columns
        object1   20052020     A
        object2   20082021     B
        object3   20012031     B
        object4   20010123     C
           .         .         .
           .         .         .
           .         .         .
          etc       etc       etc

我还有另一个 df,名为 df2:

         NAME      CODE    ........... many other columns
        object1  20052020
        object2  20082021 
           .         .

我想更改 df1 中的 TYPE 值。我只想通过代码在 df2 和 df1 之间的公共(public)元素中进行此更改,如下所示(我在公共(public)元素中将 A 类型更改为 F 类型):

        NAME       CODE       TYPE ........... many other columns
        object1   20052020     F
        object2   20082021     F
        object3   20012031     B
        object4   20010123     C
           .         .         .
           .         .         .
           .         .         .
          etc       etc       etc

最佳答案

使用DataFrame.mergeboolean indexing :

df1 = df1.merge(df2['CODE'], on='CODE', how='left', indicator=True)
df1.loc[df1.pop('_merge').eq('both'), 'TYPE'] = 'F'

或使用Series.mapSeries.fillna ,

df1['TYPE']=(
    df1['CODE'].map(
        df2.set_index('CODE').assign(TYPE='F').pop('TYPE'))
    .fillna(df1['TYPE'])
)

结果:

# print(df1)

    NAME    CODE     TYPE
0   object1 20052020    F
1   object2 20082021    F
2   object3 20012031    B
3   object4 20010123    C

关于python - 如何更改两个数据帧之间公共(public)元素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62799735/

相关文章:

python 使用 youtube_dl 检索自动字幕并转换为成绩单

python - 重复 if 语句

python - 使用 featuretools 创建 "time window features"

python - Pandas 数据框 : make new dataframe from lookup and computation of existing dataframes

python - AWS lambda - 每次执行后发布/tmp 存储

python - 匹配单词 "A"。如果 "B"是下一个单词,则也匹配

python - Concat 未按预期工作

pandas - 在 Azure Databricks 上以追加模式写入 CSV 文件

python - 根据分位数值修剪系列/数据框

python - 我有一个列表,我希望列表中的每个元素都作为一行