在熊猫中使用多个唯一的分隔符分隔字符串

时间:2018-10-12 06:58:15

标签: python pandas split

其中一列是字符串。 我想拆分字符串,但它没有用作拆分器的唯一字符。 下面是示例数据框:

`df = pd.DataFrame({'Name':['John','David'],'Occupation':['CEO','Dep Dir'],'Contact':['HP No-Mobile Ph 123:456','Off-Mobile Ph 152:256']},`)

我想做的是拆分联系人。 我想要的输出如下: My Desired output

我使用以下代码在'-'处进行分割。

df[['Contact1','Contact2']] = df.Contact.str.split('[-]',expand=True)

但是输出不是我想要的格式。 谁能帮助我,这是我找不到的特定问题。 谢谢,

Zep

3 个答案:

答案 0 :(得分:1)

首先将不需要的数据切片,然后使用static void Main(string[] args) { // LDAP string to define your OU string ou = "OU=test,DC=test,DC=local"; // set up a "PrincipalContext" for that OU using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "test.local", ou)) { // define the "query-by-example" user (or group, or computer) for your search UserPrincipal qbeUser = new UserPrincipal(ctx); // set whatever attributes you want to limit your search for, e.g. Name, etc. qbeUser.Surname = "ilgezdi"; // define a searcher for that context and that query-by-example using (PrincipalSearcher searcher = new PrincipalSearcher(qbeUser)) { foreach (Principal p in searcher.FindAll()) { // Convert the "generic" Principal to a UserPrincipal UserPrincipal user = p as UserPrincipal; if (user != null) { console.Write(user); } } } } } (假设数据Ph的长度恒定):

split

如果Ph之后的数据不是恒定的,请在字母和空格上使用df[['Contact1','Contact2']] = df.Contact.str[:-8].str.split('[-]',expand=True)

extract

df[['Contact1','Contact2']] = df.Contact.str.split('[-]',expand=True)
df['Contact2'] = df.Contact2.str.extract('([a-zA-Z ]+)')[0].str.rstrip()

答案 1 :(得分:1)

df[['Contact1','Contact2']] = df['Contact'].str.split('-' or ' ',expand=True)
df.Contact2 = df.Contact2.str.split(' ').str[:-1].apply(' '.join)

出局:

              Contact       Name    Occupation  Contact1    Contact2
0   HP No-Mobile Ph 123:456 John    CEO          HP No     Mobile Ph
1   Off-Mobile Ph 152:256   David   Dep Dir       Off      Mobile Ph

答案 2 :(得分:1)

我相信您需要split-两列,然后需要rsplit乘最后一个空格:

df[['Contact1','Contact2']] = df.Contact.str.split('-',expand=True)
df['Contact2'] = df['Contact2'].str.rsplit(n=1).str[0]
print (df)
    Name Occupation                  Contact Contact1   Contact2
0   John        CEO  HP No-Mobile Ph 123:456    HP No  Mobile Ph
1  David    Dep Dir    Off-Mobile Ph 152:256      Off  Mobile Ph