我有两个系列,我想验证它们是否都有值,所以我可以在值之间加上一个逗号。这样,最终结果看起来更有条理。现在,当我将两个系列合并到数据帧的一列中时,它看起来很混乱。
这就是我的做法:
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
它有效,但是每当系列1中没有值,或系列2中没有值或没有值时,逗号看起来真的很奇怪。
我尝试做这样的事情:
df_individual['mismatch'] = series1 + ', ' + series2
if series1.bool() & series2.bool() else
series1 + series2
(我也尝试将bool()
替换为isnull()
(但是出现错误
错误:序列的真值不明确。使用 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 语句就是这么简单。
这个想法是按列连接两个系列,如果没有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
没有奇怪的,
.
希望这是有帮助的。