繁体   English   中英

Pandas 使用 pandas apply/map/Applymap 将值插入新列

[英]Pandas inserting values to new column using pandas apply/map/Applymap

以下是dataframe,

   a  b
0  1  3
1  2  4
2  3  5
3  4  6
4  5  7
5  6  8
6  7  9

我想添加一个新列,将其称为sum ,它取其各自行值的总和。

预期 output

   a  b  sum
0  1  3   4
1  2  4   6
2  3  5   8
3  4  6   10
4  5  7   12
5  6  8   14
6  7  9   16

如何使用 pandas mapapplyApplymap功能来实现这一点?

我的代码

df = pd.DataFrame({
    'a': [1,2,3,4,5,6,7],
    'b': [3,4,5,6,7,8,9]
})

def sum(df):
    return df['a']+df['b']

# Methods I tried
df['sum'] = df.apply(sum(df))
df['sum']=df[['a',"b"]].map(sum)
df['sum'] = df.apply(lambda x: x['a'] + x['b'])

注意:这只是一个虚拟代码。 原始代码有一个 function,它为每一行返回不同的 output,它不像应用总和 function 那样简单。 因此,我要求您进行自定义sum function 并实现这些方法,以便我将学习并将其应用于我的代码。

您可以使用 pandas sum function ,如下所示:

    import pandas as pd
    
    df = pd.DataFrame({"a": [1, 2, 3, 4, 5, 6, 7], "b": [3, 4, 5, 6, 7, 8, 9]})
    
    df["sum"] = df.sum(axis=1)

    print(df)

如果您必须将 lambda 与 apply 一起使用,您可以尝试:

import pandas as pd

def add(a, b):
    return a + b

df = pd.DataFrame({
    'a': [1,2,3,4,5,6,7],
    'b': [3,4,5,6,7,8,9]
})

df['sum'] = df.apply(lambda row : add(row['a'], row['b']), axis = 1)

print(df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM