【问题标题】:Pandas dataframe create a new column based on columns of other dataframesPandas 数据框根据其他数据框的列创建一个新列
【发布时间】:2017-03-16 00:52:38
【问题描述】:

所以我有这两个df:
df A:

ID  TYPE  
1    A
2    B
3    C
4    A
5    C

df B:

TYPE  MEASURE
A      0.3
B      0.4
C      0.5

我想做的是根据df B关于TYPE的对应关系向df A添加第三列:

ID  TYPE MEASURE
1    A     0.3
2    B     0.4
3    C     0.5
4    A     0.3
5    C     0.5

我试过这个代码:

def operation (row):  

RESULT=B.loc[titlevar['TYPE'] == row['TYPE'] ][['MEASURE']].values  
return RESULT

A['MEASURE'] = A.apply (lambda row: operation (row),axis=1)

但我认为我犯了更多错误。希望有人可以帮助我。提前致谢。

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    您可以为此使用地图

    dfA['MEASURE'] = dfA['TYPE'].map(dfB.set_index('TYPE')['MEASURE'])
    

    dfA:

        ID  TYPE    MEASURE
    0   1   A       0.3
    1   2   B       0.4
    2   3   C       0.5
    3   4   A       0.3
    4   5   C       0.5
    

    【讨论】:

    • 出于某种原因,当我这样做时,我只能在 dfA 中获得一列 NA
    • 你检查了所有变量的拼写吗?它们都是您提供的示例中的 CAP,可能是标题大小写或数据框中的小写字母。我仔细检查了这段代码,所以问
    • 成功了!出于某种原因,我的 dfB 中有一个额外的空间。非常感谢!
    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2021-08-27
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多