迭代两个数据帧,比较并更改pandas或pyspark中的值
我正试着在熊猫身上做运动 我有两个数据帧。如果比较成功,我需要比较两个数据帧之间的几列,并更改第一个数据帧中一列的值 数据帧1:迭代两个数据帧,比较并更改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
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