用条件填充熊猫列

时间:2020-05-15 11:14:46

标签: python pandas

我正在尝试用以下条件填充C列:如果B列的值是None,则用列A的值填充C列。如果B列不是None,则用值3填充C列。

我尝试过:

import pandas
df = pandas.DataFrame([{'A': 5, 'B': None, 'C': ''},
                   {'A': 2, 'B': "foo", 'C': ''},
                   {'A': 6, 'B': "foo", 'C': ''},
                   {'A': 1, 'B': None, 'C': ''}])

df["C"] = df["B"].apply(lambda x: 3 if (x != None) else df["A"])

我的输出:

TypeError:类型为'int'的对象没有len()

我知道问题出在df [“ A”],但我不知道如何解决

好的输出:

df = pandas.DataFrame([{'A': 5, 'B': None, 'C': 5},
                   {'A': 2, 'B': "foo", 'C': 3},
                   {'A': 6, 'B': "foo", 'C': 3},
                   {'A': 1, 'B': None, 'C': 1}])

1 个答案:

答案 0 :(得分:3)

numpy.whereSeries.isna的测试None一起使用:

df["C"] = np.where(df["B"].isna(), df['A'], 3)
#alternative
#df["C"] = df['A'].where(df["B"].isna(), 3)
   print (df)
 A     B  C
0  5  None  5
1  2   foo  3
2  6   foo  3
3  1  None  1