gpt4 book ai didi

python - pandas 中的左连接具有相同键的多个记录

转载 作者:行者123 更新时间:2023-12-01 07:52:17 25 4
gpt4 key购买 nike

我在 pandas 中有以下数据框

df1 (LHS)
code date tank product key
123 2019-01-01 1 HS 123_2019-01-01_1
123 2019-01-01 1 HS 123_2019-01-01_1
123 2019-01-02 2 MS 123_2019-01-02_2
123 2019-01-02 1 HS 123_2019-01-02_1

df2_master (RHS)
code date tank product key
123 2019-01-01 1 MS 123_2019-01-01_1
123 2019-01-01 1 HS 123_2019-01-01_1
123 2019-01-02 2 MS 123_2019-01-02_2
123 2019-01-02 1 HS 123_2019-01-02_1

我想用左连接键合并 df1 和 df2_master。现在 df2_master 有 2 个产品与 2019 年 1 月 1 日的相同 key 关联,因此我想在合并两个数据帧时标记这一点。

我想要的数据框应该是这样的。

df1 (LHS)
code date tank product key product_df2
123 2019-01-01 1 HS 123_2019-01-01_1 More than 1 product
123 2019-01-01 1 HS 123_2019-01-01_1 More than 1 product
123 2019-01-02 2 MS 123_2019-01-02_2 MS
123 2019-01-02 1 HS 123_2019-01-02_1 HS

如何在 pandas 中做到这一点?

最佳答案

创建列 product_df2 以检查 DataFrame.duplicated 是否重复,与没有重复的行合并DataFrame.drop_duplicates和最后设置的值 numpy.where :

df2_master['product_df2'] = df2_master.duplicated(subset=['key'], keep=False)
df = df1.merge(df2_master.drop_duplicates('key'), how='left', on='key', suffixes=('','_'))
df['product_df2'] = np.where(df['product_df2'], 'More than 1 product', df['product_'])

#remove unnecessary columns
df = df.loc[:, ~df.columns.str.endswith('_')]
print (df)
code date tank product key product_df2
0 123 2019-01-01 1 HS 123_2019-01-01_1 More than 1 product
1 123 2019-01-01 1 HS 123_2019-01-01_1 More than 1 product
2 123 2019-01-02 2 MS 123_2019-01-02_2 MS
3 123 2019-01-02 1 HS 123_2019-01-02_1 HS

关于python - pandas 中的左连接具有相同键的多个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56150493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com