我有两个系列,我想验证它们是否都有值,所以我可以在值之间放一个逗号。这样,最终结果看起来更有条理。现在,当我将这两个系列合并到 Dataframe 的一列中时,它看起来很混乱。
这就是我的做法:
series1 = df_grouped['mismatchMom'].apply(lambda g: g.any() + ' with mother' if g.any() else None)
series2 = df_grouped['mismatchDad'].apply(lambda g: g.any() + ' with father' if g.any() else None)
df_individual['mismatch'] = series1 + ', ' + series2
它有效,但是每当 series1 或 series2 中没有值或两者都没有值时,逗号看起来真的很奇怪。
我试图做这样的事情:
df_individual['mismatch'] = series1 + ', ' + series2 \
if series1.bool() & series2.bool() else \
series1 + series2
(我试过更换bool()
到isnull()
为好),但我得到的错误
ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
谢谢!
如果需要,您可以使用它:(如果 s1 和 s2 具有相同的大小)
df['mismatch'] = pd.concat([s1,s2],axis = 1).apply(lambda x: ', '.join(x) if not x.all() == '' else x.sum(),axis=1)
我只是要求更改,None
因为 if 语句会像那样简单。
我们的想法是Concat的两个系列柱,只需加入行,如果没有empty strings
。如果有,我们只对行元素求和。
这样你就可以得到如下输出:
A B mismatch
0 stuff more aa, aa
1 stuff more bb
2 stuff more cc
3 stuff more
4 stuff more ee, ee
没有奇怪的,
。
希望这是有帮助的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句