假设我们必须遵循熊猫数据框
asd = pd.DataFrame({'A':['a', 'b', np.nan, 'c', np.nan], 'B':['f', np.nan, 'u', 'i', np.nan]})
我想连接 'A' 和 'B' 列中的值并在它们之间放置一个逗号 ',' 并将其放入一个新列 asd['C'] 如果它们都是 notnull()。否则,如果另一个是 null() 则返回,或者如果两者都是 null() 则返回 np.nan 所以列 'C' 的最终结果将是
asd['C'] = ['a, f', 'b', 'u', 'c, i', np.nan]
我尝试了以下
def f(asd):
if asd['A'].notnull() & asd['B'].notnull():
asd['C'] = asd['A'] + ', ' + asd['B']
elif asd['A'].notnull() & asd['B'].isnull():
asd['C'] = asd['A']
elif asd['A'].isnull() & asd['B'].notnull():
asd['C'] = asd['B']
else:
asd['C'] = np.nan
return asd['C']
asd['C'] = asd.apply(f, axis=1)
但它给了我以下错误
("'str' object has no attribute 'notnull'", 'occurred at index 0')
任何帮助真的很感激
使用apply
+ str.join
:
df.apply(lambda x: ', '.join(x.dropna()), 1).replace('', np.nan)
0 a, f
1 b
2 u
3 c, i
4 NaN
dtype: object
最后一个replace
电话会处理您的np.nan
要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句