【问题标题】:How to create new column in first dataframe based on the second dataframe?如何根据第二个数据框在第一个数据框中创建新列?
【发布时间】:2021-02-01 15:20:10
【问题描述】:

我有 2 个数据框,我需要根据第二个数据框创建新列。我可以直接使用转置并一一创建列,但我需要一些有效的解决方案,因为我在真实数据集中的第二个数据框中有很多值。

这是我的 df1 的外观:

Brand      Model
A           MA
B           MB
C           MC
D           MD

df2

Channels      Values
CNN           20%
BBC           70%
TNT           10%

我想要这样的最终输出:

 Brand      Model        Channel-CNN       Channel-BBC        Channel-TNT
    A           MA            20%                70%               10%
    B           MB            20%                70%               10%
    C           MC            20%                70%               10%
    D           MD            20%                70%               10%

【问题讨论】:

    标签: python pandas dataframe transpose


    【解决方案1】:

    让我们试试吧:

    # transpose df2 and promote `Channels` to column names
    s = df2.set_index(['Channels']).T.add_prefix('Channels-')
    
    df1[s.columns] = np.vstack([s.values]*len(df1))
    

    输出:

      Brand Model Channels-CNN Channels-BBC Channels-TNT
    0     A    MA          20%          70%          10%
    1     B    MB          20%          70%          10%
    2     C    MC          20%          70%          10%
    3     D    MD          20%          70%          10%
    

    【讨论】:

    • 感谢您的回答,但运行第二行代码时出现错误。 KeyError: "None of [Index([
    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 2019-12-19
    • 2021-06-06
    • 2021-12-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多