簡體   English   中英

根據另一個數據幀的列值的條件將數據添加到數據幀中的列

[英]Adding data to columns in a dataframe based on condition on column values of another dataframe

我有一個帶有多個值的 B 列的輸入數據框:df1

    A   B         C D   E
0   a1  b1       c1 d3  e1
1   a1  b2,b3    c2 d4  e2
2   a2  b3       c3 d5  e3
3   a2  b2       c8 d6  e1
4   a2  b4,b1,b5 c4 d7  e2
5   a3  b4       c5 d3  e4
6   a4  b5       c6 d1  e5
7   a4  b6, b2   c1 d2  e1
8   a5  b6       c2 d7  e2

我希望將 df1 中 C 列和 D 列的數據添加到另一個數據框。 在這個 B 列中,每行只有 1 個值。 df2

    A   B
0   a1  b1
1   a4  b6
2   a2  b1
3   a4  b2

我想要一個輸出數據框,它檢查 df1 中的行,它在 df2 中同時具有 A 和 B 的值,並從 df1 中的該行添加 C 和 D 的值。 所需的輸出:

    A   B   C   D
0   a1  b1  c1  d3
1   a4  b6  c1  d2
2   a2  b1  c4  d7
3   a4  b2  c1  d2

我面臨的挑戰是 df1 的 B 列中的多個值,並檢查 df1 中的 2 列以在 df2 中添加 C 和 D。 我怎樣才能做到這一點?

您首先需要分解 B 列,例如您在單個單元格中有一個值而不是逗號分隔的值。 使用str.splitexplode B 列進行操作。 然后merge

res = (
    df2.merge(df1.assign(B=lambda x: x['B'].str.split(','))
                 .explode('B')
                 [['A','B','C','D']], 
              on=['A','B'], how='left')
)
print(res)
    A   B   C   D
0  a1  b1  c1  d3
1  a4  b6  c1  d2
2  a2  b1  c4  d7
3  a4  b2  c1  d2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM