熊猫-团结完成专栏

他们是摩西

假设我具有以下DataFrame对象:

import pandas as pd

df = pd.DataFrame({'r1' : [0, 0, 'str1', 'str2', 0 ,0 ,0], 'r2' : ['str1', 'str2', 0, 0, 'str3', 'str4', 'str5']})
df
Out[45]: 
     r1    r2
0     0  str1
1     0  str2
2  str1     0
3  str2     0
4     0  str3
5     0  str4
6     0  str5

r1“完成”在哪里r2(当一个是0另一个时是a string),反之亦然。

将两者结合起来并获得以下DataFrame的最快方法是什么:

    r_u
0  str1
1  str2
2  str1
3  str2
4  str3
5  str4
6  str5
耶斯列尔

如果性能很重要,请使用numpy.select

#more general solution 
df = pd.DataFrame({'r1' : [0, 0, 'str1', 'str2', 0 ,0 ,0, 0, 'str7'], 
                   'r2' : ['str1', 'str2', 0, 0, 'str3', 'str4', 'str5', 0, 'str8']})
print (df)
     r1    r2
0     0  str1
1     0  str2
2  str1     0
3  str2     0
4     0  str3
5     0  str4
6     0  str5
7     0     0 
8  str7  str8

如果0default参数中定义了两个预期的输出,并且是否都可能在字符串中按掩码和列的顺序对其进行优先排序:

m1 = df['r1'] != 0
m2 = df['r2'] != 0
df['r3'] = np.select([m1, m2], [df['r1'], df['r2']], default=None)
df['r4'] = np.select([m2, m1], [df['r2'], df['r1']], default=None)

print (df)
     r1    r2    r3    r4
0     0  str1  str1  str1
1     0  str2  str2  str2
2  str1     0  str1  str1
3  str2     0  str2  str2
4     0  str3  str3  str3
5     0  str4  str4  str4
6     0  str5  str5  str5
7     0     0  None  None
8  str7  str8  str7  str8

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章