Python Dataframe根据另一列的值向新列添加值

乘风 python 187

原文标题Python Dataframe add a value to new column based on value from another column

实现这种情况的最短方法是什么::

Dataframe1:(Dataframe1 A 列有额外的值,因此我不能简单地执行 df2[“Column C”] = df[“Column B”])

Column A Column B
Cell 1 Valu 2
Cell w Valu 8
Cell 3 Valu 4

条件:在 Dataframe1 的 B 列中的 Dataframe2 的 C 列(新列)插入值,其中来自 Dataframe1 ‘Cell 1’ 的列 A 的值与来自 Dataframe2 ‘Cell 1’ 的列 X 的值匹配

Dataframe2 Initial:(只有 X 列和 J 列)

Column X Column J
cell 1 Data c
cell 3 Data f

Dataframe2 Final:(只有 X 列和 J 列,现在具有上述条件的 C 列)

Column X Column J Column C
Cell 1 Data c Valu 2
Cell 3 Data f Valu 4
for key, value3 in df['Column A'].iteritems():
        value2 = datetime.datetime.strptime(value3, '%m/%d/%Y').strftime('%Y-%m-%d')
        value2 = str(value2)
        for key2, value4 in df2['Column X'].iteritems():
            sep = ' '
            value = str(value4)
            stripped = value.split(sep, 1)[0]
            if value2 == stripped:
                x = df[df['Column A']==value3]['Column B'].values[0]
                df2['Column C'][key2] = x

原文链接:https://stackoverflow.com//questions/71599931/python-dataframe-add-a-value-to-new-column-based-on-value-from-another-column

回复

我来回复
  • Prats的头像
    Prats 评论

    你可以使用amerge来达到你想要的结果。

    import pandas as pd
    df = pd.DataFrame({'Col A':['Cell 1','Cell 3'],'Col B':['Cell 2','Cell 4']})
    df1 = pd.DataFrame({'Col X':['Cell 1','Cell 3'],'Col Y':['Cell c','Cell F']})
    df2 = df1.merge(df,left_on='Col X',right_on='Col A',how='inner') 
    df2
    

    在此之后,您可以操作数据(删除额外的列,重命名列),但这将帮助您将 ‘Col B’ 放入 df1 if df[‘Col A’] = df1[‘Col X]

    2年前 0条评论
  • SpaceBurger的头像
    SpaceBurger 评论

    这就是你可以用DataFrame.join(...)操作来做到的。您确实也可以使用DataFrame.merge(...)方法。

    import pandas as pd
    
    # definition of the dataframes
    df = pd.DataFrame(columns=["A", "B"])
    df.A = [1, 2, 3]
    df.B = ["b1", "b2", "b3"]
    
    df2 = pd.DataFrame(columns=["X"])
    df2.X = [1, 3]
    
    # join operation
    df2_final = df2.set_index("X").join(df.set_index("A")).reset_index()
    

    哪个输出:

       X   B
    0  1  b1
    1  3  b3
    
    2年前 0条评论