这是我的数据框:
A B
0 asdf|afsdf|fasd sdsd|wer|wer
1 sdfsdf sdfsdff
2 sdf|s sdfsde|sdf
我想形成列C
,其中包含从列A
和列B
到第一个|
的连接值,如果|
是--
不存在,那么它将简单地连接两列。在连接时我想插入C
列 C
0 asdf--sdsd
1 sdfsdf--sdfsdff
2 sdf--sdfsde
列应该是这样的:
df.loc
我可以通过s = std::string(x);
遍历每一行并得到我需要的东西,但它很慢,我想知道是否有更快的方法。
答案 0 :(得分:5)
可能有一种更奇特的方式,但这有效:
In [1]: import pandas as pd
In [2]: d = {'A': ('asdf|afsdf|fasd', 'sdfsdf', 'sdf|s'),
'B': ('sdsd|wer|wer', 'sdfsdff', 'sdfsde|sdf')}
In [3]: data = pd.DataFrame(d)
In [4]: data['C'] = data['A'].str.split('|').str.get(0) + "--" + data['B'].str.split('|').str.get(0)
In [5]: data
Out[5]:
A B C
0 asdf|afsdf|fasd sdsd|wer|wer asdf--sdsd
1 sdfsdf sdfsdff sdfsdf--sdfsdff
2 sdf|s sdfsde|sdf sdf--sdfsde
可以在their documentation中找到有关使用pandas
中字符串的参考资料。
答案 1 :(得分:3)