0

我正在尝试在熊猫中进行练习。

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

数据框 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 中的哪些代码可以完成我需要做的事情?

谢谢!

4

1 回答 1

1

mergeindicator然后是map值。确保drop_duplicates在右侧框架中的合并键上,以便合并结果始终与原始长度相同,并重命名以便我们在合并后不会重复相同的信息。不需要有一个预定义的 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)

  Article  Country Colour  Buy
0   Pants  Germany    Red    0
1    Pull   Poland   Blue    1
于 2019-09-23T19:07:26.860 回答