【发布时间】:2017-10-19 02:03:24
【问题描述】:
我正在尝试在 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 的能力?如果没有,您有其他解决方案吗?谢谢。
【问题讨论】:
-
您的示例只有一列。如果您的数据集中没有
Col2,则无法从Col2中绘制;此外,一般来说,如果没有任何其他列,您将无法获得“另一列的数据”。 -
@aryamccarthy 道歉。我应该制作一个任意的“Col2”。我会测试并回来。
-
这似乎不适用于我的大型 DataFrame,但在示例中确实有效。这可能是因为在我的实际数据集中有不同的数据类型,所以 fillna 无法正常工作?我的实际集合中的 Col1 和 Col2 都是 dtype('O') 所以这应该不是问题。
标签: python python-3.x pandas lambda nan