gpt4 book ai didi

python - 通过在两个现有列上使用 lambda 函数在 Panda 中创建一个新列

转载 作者:太空狗 更新时间:2023-10-29 16:56:58 26 4
gpt4 key购买 nike

我可以通过定义用户函数然后使用应用在 Panda 中添加一个新列。但是,我想使用 lambda 来做到这一点;有办法解决吗?

例如,df 有两列ab。我想创建一个新列 c,它等于 ab 之间的最长长度。

像这样的东西:

df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']) )

一种方法:

df = pd.DataFrame({'a':['dfg','f','fff','fgrf','fghj'], 'b' : ['sd','dfg','edr','df','fghjky']})

df['c'] = df.apply(lambda x: max([len(x) for x in [df['a'], df['b']]]))
print df
a b c
0 dfg sd NaN
1 f dfg NaN
2 fff edr NaN
3 fgrf df NaN
4 fghj fghjky NaN

最佳答案

您可以使用函数 map并按函数选择 np.where more info

print df
# a b
#0 aaa rrrr
#1 bb k
#2 ccc e
#condition if condition is True then len column a else column b
df['c'] = np.where(df['a'].map(len) > df['b'].map(len), df['a'].map(len), df['b'].map(len))
print df
# a b c
#0 aaa rrrr 4
#1 bb k 2
#2 ccc e 3

下一个解决方案是使用函数 apply带参数 axis=1:

axis = 1 or ‘columns’: apply function to each row

df['c'] = df.apply(lambda x: max(len(x['a']), len(x['b'])), axis=1)

关于python - 通过在两个现有列上使用 lambda 函数在 Panda 中创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com