迭代两个数据帧,比较并更改pandas或pyspark中的值

迭代两个数据帧,比较并更改pandas或pyspark中的值,pandas,pyspark,pyspark-dataframes,Pandas,Pyspark,Pyspark Dataframes,我正试着在熊猫身上做运动 我有两个数据帧。如果比较成功,我需要比较两个数据帧之间的几列,并更改第一个数据帧中一列的值 数据帧1: Article Country Colour Buy Pants Germany Red 0 Pull Poland Blue 0 最初,我的所有文章都将“购买”标志设置为零。 我的dataframe 2看起来如下: Article Origin Colour Pull

我正试着在熊猫身上做运动

我有两个数据帧。如果比较成功,我需要比较两个数据帧之间的几列,并更改第一个数据帧中一列的值

数据帧1:

Article    Country   Colour    Buy
Pants      Germany   Red       0
Pull       Poland    Blue      0
最初,我的所有文章都将“购买”标志设置为零。 我的dataframe 2看起来如下:

Article    Origin    Colour   
Pull       Poland    Blue    
Dress      Italy     Red
我想检查文章、国家/原产地和颜色列是否匹配(因此检查我是否可以在数据框2中找到数据框1中的每一篇文章),如果是,我想将“购买”标志置于1

我试图用pyspark遍历这两个数据帧,但pyspark daatframes不可移植。 我曾想过在pandas中这样做,但在迭代过程中改变值是一种不好的做法

pyspark或pandas中的哪些代码可以完成我需要做的事情


谢谢

使用
指示器合并
,然后
映射
值。确保在右侧帧中的合并关键点上放置重复项,以便合并结果始终与原始结果长度相同,并重命名,以便合并后不会重复相同的信息。无需预先定义0列

df1 = df1.drop(columns='Buy')
df1 = df1.merge(df2.drop_duplicates().rename(columns={'Origin': 'Country'}), 
                indicator='Buy', how='left')
df1['Buy'] = df1['Buy'].map({'left_only': 0, 'both': 1}).astype(int)


谢谢这很有效。现在我必须为另一个数据库做一些更复杂的事情,但我会打开另一个qq。
  Article  Country Colour  Buy
0   Pants  Germany    Red    0
1    Pull   Poland   Blue    1