【问题标题】:How to update Pandas dataframe with a new column using values from another dataframe?如何使用来自另一个数据帧的值更新 Pandas 数据帧和一个新列?
【发布时间】:2021-06-19 11:24:12
【问题描述】:

如何使用 Pandas 更新/组合/合并数据框 (df1) 与另一个数据框 (df2) 中的值,其中 df1 有一个新列 (col3) 中的值来自 df2.col2?换句话说,df1 是当前月份的值,我希望 df1 也有一个来自 df2 的列,它是上个月的值。

对此的任何见解表示赞赏;谢谢你。

df1:

key date col1 col2
key1 feb-01 df1_val01 df1_val02
key2 feb-01 df1_val11 df1_val12

df2:

key date col1 col2
key1 jan-01 df2_val01 df2_val02
key2 jan-01 df2_val11 df2_val12

所需的df:

key date col1 col2 col3
key1 feb-01 df1_val01 df1_val02 df2_val01
key2 feb-01 df1_val11 df1_val12 df2_val12

【问题讨论】:

  • 只需将两者合并即可。 pd.merge(df1, df2[['key', 'col1']].rename(columns={'col1':'col3'}), on='key', how='inner')

标签: python pandas dataframe


【解决方案1】:

合并、连接、连接、数据帧可能很棘手。我发现的最简单的方法之一是将共享的“键”列变成索引。重命名该列(在您的情况下为“col3”)并加入“key”索引列。

在你的情况下,它看起来像:

right_df = df_1[["key", "col2"]].set_index("key")
right_df = right_df.rename(columns={"col2": "col3"})
new_df = df2.join(right_df, on="key")

(我没有测试这段代码。这是凭记忆。如果它严重失败,请告诉我,我会看看我是否可以修复它。)

【讨论】:

    猜你喜欢
    • 2019-07-10
    • 1970-01-01
    • 2016-07-05
    • 2020-09-20
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2015-12-31
    相关资源
    最近更新 更多