gpt4 book ai didi

python - 支持 Nan 的 Pandas Lambda 函数

转载 作者:太空狗 更新时间:2023-10-30 01:44:17 26 4
gpt4 key购买 nike

我正在尝试在 Pandas 中编写一个 lambda 函数来检查 Col1 是否为 Nan,如果是,则使用另一列的数据。我在获取代码(下方)以正确编译/执行时遇到问题。

import pandas as pd
import numpy as np
df=pd.DataFrame({ 'Col1' : [1,2,3,np.NaN], 'Col2': [7, 8, 9, 10]})
df2=df.apply(lambda x: x['Col2'] if x['Col1'].isnull() else x['Col1'], axis=1)

有没有人知道如何使用 lambda 函数编写这样的解决方案,或者我是否超出了 lambda 的能力?如果没有,您还有其他解决方案吗?谢谢。

最佳答案

你需要pandas.isnull检查标量是否为 NaN:

df = pd.DataFrame({ 'Col1' : [1,2,3,np.NaN],
'Col2' : [8,9,7,10]})

df2 = df.apply(lambda x: x['Col2'] if pd.isnull(x['Col1']) else x['Col1'], axis=1)

print (df)
Col1 Col2
0 1.0 8
1 2.0 9
2 3.0 7
3 NaN 10

print (df2)
0 1.0
1 2.0
2 3.0
3 10.0
dtype: float64

但更好的是使用 Series.combine_first :

df['Col1'] = df['Col1'].combine_first(df['Col2'])

print (df)
Col1 Col2
0 1.0 8
1 2.0 9
2 3.0 7
3 10.0 10

另一种解决方案 Series.update :

df['Col1'].update(df['Col2'])
print (df)
Col1 Col2
0 8.0 8
1 9.0 9
2 7.0 7
3 10.0 10

关于python - 支持 Nan 的 Pandas Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061607/

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