【问题标题】:How to assign values to the rows of a data frame which satisfy certain conditions?如何为满足特定条件的数据框行赋值?
【发布时间】:2021-12-21 00:37:43
【问题描述】:

我有两个数据框:

df1 = pd.read_excel("test1.xlsx")
df2 = pd.read_excel("test2.xlsx")

我正在尝试将 df1 的值分配给满足特定条件的 df2(Column1 等于 Column1,然后将 ColY 的值分配给 ColX)。

df1.loc[df1['Col1'] == df2['Col1'],'ColX'] = df2['ColY'] 

这会导致错误,因为 df2['ColY] 是整个列。如何仅分配匹配的行?

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    你可以使用numpy.where:

    import numpy as np 
    
    df1['ColX'] = np.where(df1['Col1'].eq(df2['Col1']), df2['ColY'], df1['ColX'])
    

    【讨论】:

    • @asim 你试过我的回答了吗?
    • @Ashim 如果答案有帮助,请upvoteaccept 它。
    【解决方案2】:

    既然你想从 df1 分配给 df2 你的代码应该是

    df2.loc[df1['Col1']==df2['Col2'],'ColX']=df1.['ColY']
    

    您编写的代码不会将值从 df1 分配给 df2,而是从 df2 分配给 df1。 而且,如果您能澄清 ColX 和 ColY 属于哪个数据框,我可以提供更多帮助(或者两个数据框都有它们吗??)。 你的代码非常正确!!!只改变上面的 df1 和 df2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      相关资源
      最近更新 更多