将两个系列合并为数据帧的一列



我有两个系列,我想验证它们是否都有值,所以我可以在值之间加上一个逗号。这样,最终结果看起来更有条理。现在,当我将两个系列合并到数据帧的一列中时,它看起来很混乱。

这就是我的做法:

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

没有奇怪的,.

希望这是有帮助的。

最新更新