【问题标题】:Joining two dataframes based on the columns of one of them and the row of another根据其中一个的列和另一个的行连接两个数据框
【发布时间】:2020-07-10 14:01:27
【问题描述】:

对不起,如果标题没有意义,但不确定如何解释它。这是我正在谈论的一个例子

df_1

| ID | F\_Name | L\_Name |
|----|---------|---------|
| 0  |         |         |
| 1  |         |         |
| 2  |         |         |
| 3  |         |         |

df_2

| ID | Name\_Type | Name   |
|----|------------|--------|
| 0  | First      | Bob    |
| 0  | Last       | Smith  |
| 1  | First      | Maria  |
| 1  | Last       | Garcia |
| 2  | First      | Bob    |
| 2  | Last       | Stoops |
| 3  | First      | Joe    |

df_3(结果)

| ID | F\_Name | L\_Name |
|----|---------|---------|
| 0  | Bob     | Smith   |
| 1  | Maria   | Garcia  |
| 2  | Bob     | Stoops  |
| 3  | Joe     |         |

欢迎任何和所有的建议!谢谢

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我猜你想要做的是重塑你的第二个 DataFrame 以具有与第一个相同的结构,对吧?

    你可以使用pivot方法来实现它:

    df_3 = df_2.pivot(columns="Name_Type", values="Name")
    

    然后,您可以重命名索引和列:

    df_3 = df_3.rename(columns={"First": "F_Name", "Second": "L_Name"})
    df_3.columns.name = None
    df_3.index.name = "ID"
    

    【讨论】:

    • 好的,谢谢,我想这会让我走上正轨。我的下一个问题是,如果这些表是更大表的一部分,我想保持其余表相同,但只更改这一部分。那我该怎么办?
    • 您是指其余的列?对于相同的“F_Name”和“L_Name”组合,这些列的值是否可以不同?
    • 不,它们不能不同,假设两个 dfs 都有一个年龄列
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2016-08-07
    • 2020-01-11
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多