我正在尝试用以下条件填充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}])
使用numpy.where
与测试None
通过Series.isna
:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句