我正尝试在大熊猫中锻炼。
我有两个数据框。如果比较成功,我需要比较两个数据帧之间的几列,并更改第一个数据帧中一列的值。
数据框1:
Article Country Colour Buy
Pants Germany Red 0
Pull Poland Blue 0
最初,我所有文章的标志“购买”均设为零。 我的数据框2看起来是:
Article Origin Colour
Pull Poland Blue
Dress Italy Red
我想检查商品,国家/地区和颜色列是否匹配(因此请检查是否可以从数据框2中的数据框1中找到每件商品),如果可以,我要将标记“购买”放置到1。
我尝试使用pyspark遍历两个数据框,但是pyspark daatframes不可迭代。 我曾考虑过要在熊猫中这样做,但是在迭代过程中更改值显然是个坏习惯。
pyspark或pandas中的哪个代码可以完成我需要做的事情?
谢谢!
答案 0 :(得分:1)
merge
,其中包含一个indicator
,然后是map
个值。确保在右框中的合并键上使用drop_duplicates
,以便合并结果的长度始终与原始长度相同,然后重命名,以便在合并后不再重复相同的信息。无需具有0s的预定义列。
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)
Article Country Colour Buy
0 Pants Germany Red 0
1 Pull Poland Blue 1